ich verwende einen OleDbDataAdapter und einen SqlDataAdapter alternativ. Ein vom Adapter abgesehen identischer Code funktioniert mit dem SQL Adapter ohne Probleme (auch die DB ist quasi identisch) Bei dem update durch den OLEDB-Adapter bekomme ich eine „Paralellitätsverletzung“ was wohl ein concurrency Problem meint. Natürlich ist die Betreffende Access-DB lokal und nicht geöffnet. dies ist nicht abhängig von DB oder Tabelle…
SQLServer geht, Access nicht…
konnte mein Problem jetzt lösen. Ich bin auf einen Unterschied bezüglich der XXXcommand.Parameter zwischen SqlDataAdapter und OleDbDataAdapter „hereingefallen“.
Bei dem SqlDataAdapter referenzieren diese auf gleichnamige Variablen im SQLStatement z.B.
ubdate…set attribut1 = @a1, attribut2 = @a2 where id = @id
und die Reihenfolge der XXXCommand.Parameters.Add(para) ist egal.
Bei OleDbDataAdapter nur
ubdate…set attribut1 = ?, attribut2 = ? where id = ?
Hier geht die Zuordnung nicht über den Parameternamen sondern über die add-Reihenfolge.
Da ich Parameter & Statements generiere und zunächst SQLS/OLEDB gleich erzeugte war die ID nicht wirklich meine ID - daher die „Paralellitätsverletzung“ - (concurrency exception)