Laden...

Autoincrement in Dataset

Erstellt von Chino vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.573 Views
C
Chino Themenstarter:in
7 Beiträge seit 2005
vor 18 Jahren
Autoincrement in Dataset

Hallo

Ich habe da ein Dataset, welches den Inhalt meiner Datenbank repräsentiert. Wenn ich nun in eine Tabelle einen Datensatz hinzufügen möchte, dann habe ich das Problem, dass diese Tabelle einen eindeutigen Primärschlüssel hat.

Bisher löse ich das so, dass ich dem Feld einfach ein Null übergebe, und den weiteren Feldern die jeweiligen Werte.Scheinbar funktioniert das auch, denn er generiert mir eine Zahl (in diesem Fall 23), die er ins DS schreiben will. Das DS reklamiert nun aber seinerseits mit einer Exception, dass dies nicht möglich sei, da bereits eine ID 23 existiert.

Was muss man beachten, was ich evt. falsch gemacht haben könnte? Bräuchte ma dringend eure Hilfe!!!

Hier noch ein bisschen Code:

// Array mit den Informationen der Textboxen füllen
object[] myNewData = new object[8];
myNewData[0] = null;
myNewData[1] = this.txtname.Text;
myNewData[2] = this.txtVersionNr.Text;
myNewData[3] = this.txtSerienr.Text;
myNewData[4] = this.txtKategorie.Text;
myNewData[5] = this.txtOrt.Text;
myNewData[6] = this.txtBemerkung.Text;
myNewData[7] = this.lbDetail.Text;

// Array dem DataSet hinzufügen
this.DetailData.Tables["Hardware"].Rows.Add(myNewData);

Computer werden den Menschen immer ähnlicher - sie können bald alles, außer denken.

4.221 Beiträge seit 2005
vor 18 Jahren

Du kannst die AutoIncrement-Spalte so frisieren dass die künstlichen Keys in den Minusbereich laufen.... so schliesst Du Konflikte mit echten ID's aus...

Guckst Du in Doku:

DataColumn.AutoIncrementSeed
DataColumn.AutoIncrementStep

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
230 Beiträge seit 2004
vor 18 Jahren

Wieso sollen denn diese IDs in den Minusbereich hinauslaufen? Klar - so könnte man evt. Konflikte mit der "echten" ID des Primary Keys umgehen, aber ich will das Dataset ja irgendwann wieder in die DB zurücklesen.

Die eigentliche Frage ist also: wieso gibt er mir eine falsche Zahl (23), die bereits vorhanden ist. Wenn ich direkt an einen MSSQL Server ein INPUT mache und die ID einfach weglasse, so geht das ja auch und er generiert mir eine gültige ID.

btw. Chino ist mein Unterstift (Unterazubi für alle deutschen 😄)

Wenn Zeit in Geschichte übergeht und keine Blüten trägt werden Zukunftsbilder blass //Clueso

4.221 Beiträge seit 2005
vor 18 Jahren

Die echte ID wird erst beim Insert auf die DB vergeben..... Der AutoIncrement der DataTable gibt immer eine ID zurück welche höher ist als die höchste der DataTable ... und bei einer leeren Tabelle können somit ID's vergeben werden obwohl so eine ID auf der DB existiert.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
8.746 Beiträge seit 2005
vor 18 Jahren

Super-Tutorial zum Thema AutoIncrement und ADO.NET:

http://www.addison-wesley.de/media_remote/katalog/bsp/3827319978bsp.pdf