Azubine27 Geschrieben 24. Juli 2009 Geschrieben 24. Juli 2009 Hallo, ich habe eine Frage. Ich bette in C# Code SQL ein. Ich möchte eine Tablle anlegen. Es besteht im Code eine Verbindung zur Datenbank. (Die habe ich getestet, die geht, daran liegt es nicht.) Mein Problem ist die Spalte ID aus der Tabelle. Die möchte ich Autoincrement anlegen. Der Code lässt sich ausführen. Die Tabelle ist dann auch in der DB zu finden. Aber wenn ich dann aus einer Maske heraus, Daten in die Spalte Name laden will, besteht das Problem, dass er sich beschwert, dass er für die Spalte ID kein Wert eingegeben wird. Aber ich habe doch beim erstellen der Tabelle angegeben, dass automatisch die ID hochgesetzt wird, wenn ein Name angelegt wird. Kann mir jemand sagen, wo der Fehler liegt? LG, Azubine Zitieren
delen Geschrieben 24. Juli 2009 Geschrieben 24. Juli 2009 (bearbeitet) du musst beim einfügen neuer datensätze dennoch angeben, dass das feld ID belegt werden muss. Meistens mit einer Art Platzhalter wie " " oder dergleichen, je nach DBMS. Mit deinem Screenshot kann man nichts anfangen. Zeig doch bitte den SQL Befehl, der die Daten in die Tabelle lädt (kopier ihn einfach.. kein screenshot). grüße delen EDIT: die frage nach dem DBMS hat sich geklärt, man muss halt auch den threadtitel lesen können . EDIT die 2.: einen Auto_Increment gibt es im SQL Server nicht. du benötigst "IDENTITY(1,1)" statt dem auto_increment. Bearbeitet 24. Juli 2009 von delen Zitieren
Azubine27 Geschrieben 24. Juli 2009 Autor Geschrieben 24. Juli 2009 (bearbeitet) Danke schonmal. Ok, nur die SQL Statements: //Zur Anlage der Tabelle string strSQL = "CREATE TABLE TestSA_Basar(Test Integer)" + "ID INTEGER NOT NULL IDENTITY(1,1)"+ "Name CHAR"+ "PRIMARY KEY(ID)"; //Zum einlesen der Daten string strSQL2 = "INSERT INTO Test(ID, Name)"+ "VALUES (' ','" + textBox1.Text +"') "; Hatte es schon durch deinen Hinweis schon etwas geändert. Bearbeitet 24. Juli 2009 von Azubine27 Zitieren
delen Geschrieben 24. Juli 2009 Geschrieben 24. Juli 2009 was du auch machen kannst ist, dass du die ID beim insert ganz einfach weglässt. also: INSERT INTO Test(Name) VALUES ('Name') ; aber hats denn nun funktioniert oder nicht? grüße delen Zitieren
Azubine27 Geschrieben 24. Juli 2009 Autor Geschrieben 24. Juli 2009 (bearbeitet) So wie du es geschrieben hast geht es leider nicht. Also ID rausnehmen. Und so wie ich es geschrieben habe geht es auch nicht :-( Fehler gefunden, es lag daran, wie ich die Tabelle angelegt hatte :-) So ist es richtig: CREATE TABLE SABasarTest( ID INTEGER IDENTITY(1,1), Name NVARCHAR(80) ) Bearbeitet 24. Juli 2009 von Azubine27 Zitieren
delen Geschrieben 24. Juli 2009 Geschrieben 24. Juli 2009 "geht nicht" is leider keine ausreichende fehlerbeschreibung ;-). Ich brauch mehr Input ^^ ich habs mit einer testtabelle probiert, es hat funktioniert. beide methoden. ich bin kein "richtiger" entwickler, aber von der SQL Seite aus ist die Syntax richtig. achja was mir noch einfällt: sql server mag keine ". Wenn man zeichen einfügen will, dann immer einfache anführungszeichen, also ' nutzen. prüf doch bitte manuell nach, ob in den tabelleneigenschaften bei "identitätsspezifikation" für die ID-Spalte "Ja" drinsteht. grüße delen EDIT: gut^^ Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.