Hallo Freunde,
ich habe hier eine SQLAnywhere-Datenbank liegen und möchte nun per C# und OleDB darauf zugreifen. OleDB und untypisierte Datasets sind leider Pflicht - diese Art SQL-Server verfügt über ein "Feature", das die Nutzung typisierter Datasets oder gar des EF ausschließt
Also habe ich hier einen OleDbDataAdapter, der wie folgt erzeugt wird:
KDNR und Schiffsname sind zwei VarChars (20+50 Zeichen), ID ist ein Autoincrement-Integer, Identitätsspalte und Primary Key. Null Hexenwerk.
Blöderweise erzeugt das UpdateCommand, das per OleDbCommandBuilder erzeugt wird, nicht das korrekte Update-Statement. da es mehrere Schiffe mit demselben Namen geben kann, wird ein Boot mit dem Namen "X" zwar editiert, aber alle anderen Boot, die auch "X" als Schiffsnamen haben, gleich mit. Die Identity-Spalte wird nicht berücksichtigt. Also habe ich mir gedacht, machste das UpdateCommand eben selbst:
Zum Test nur der Schiffsname drin. Lasse ich das laufen, gibts folgende Fehlermeldung:
"Spalte @ID nicht gefunden". Natürlich nicht, die gibts auch nicht, steht ja auch hinter dem Gleichheitszeichen Was mache ich denn nun falsch ? Ich seh da echt keinen Fehler und bin bestimmt mal wieder Betriebsblind.
ich habe hier eine SQLAnywhere-Datenbank liegen und möchte nun per C# und OleDB darauf zugreifen. OleDB und untypisierte Datasets sind leider Pflicht - diese Art SQL-Server verfügt über ein "Feature", das die Nutzung typisierter Datasets oder gar des EF ausschließt
Also habe ich hier einen OleDbDataAdapter, der wie folgt erzeugt wird:
KDNR und Schiffsname sind zwei VarChars (20+50 Zeichen), ID ist ein Autoincrement-Integer, Identitätsspalte und Primary Key. Null Hexenwerk.
Blöderweise erzeugt das UpdateCommand, das per OleDbCommandBuilder erzeugt wird, nicht das korrekte Update-Statement. da es mehrere Schiffe mit demselben Namen geben kann, wird ein Boot mit dem Namen "X" zwar editiert, aber alle anderen Boot, die auch "X" als Schiffsnamen haben, gleich mit. Die Identity-Spalte wird nicht berücksichtigt. Also habe ich mir gedacht, machste das UpdateCommand eben selbst:
Zum Test nur der Schiffsname drin. Lasse ich das laufen, gibts folgende Fehlermeldung:
"Spalte @ID nicht gefunden". Natürlich nicht, die gibts auch nicht, steht ja auch hinter dem Gleichheitszeichen Was mache ich denn nun falsch ? Ich seh da echt keinen Fehler und bin bestimmt mal wieder Betriebsblind.