Kann Datensatz nicht richtig eintragen. autoincrement Eintrag ?!

NetPerformance

Erfahrenes Mitglied
Hallo,

Ich versuche per PreparedStatement meine Anweisung vorzubereiten um anschließend ein Datensatz in der Datenbank einzutragen.

Das Anlegen der Tabelle hat ohne Probleme funktioniert:
Code:
// Neue Tabellen anlegen 			
Statement create = con.createStatement();
create.executeUpdate("CREATE TABLE abteilung (id INT(10), name VARCHAR(50), PRIMARY KEY(id))");

Wichtig: das Feld id sollte per autoincrement gefüllt werden.

Code:
// Anweisungen vorbereiten und Datensatz eintragen
PreparedStatement insert;

insert = (PreparedStatement) con.prepareStatement("INSERT INTO abteilung VALUES(?,?)");
insert.setInt(1,1);
insert.setString(2,"marketing");
insert.execute();

insert.setInt(1,1); <-- ich habe hier trotz autoincrement 1,1 angegeben. Wie wird die Zeile richtig geschrieben ? setint(?,1)

Mit der Eingabe von 1,1 sieht der Eintrag folgender maßen aus:
http://www.netperformance.de/test/mysql3.jpg

Statt id=1 wird id=196869 angezeigt. Ich gehe davon aus, dass der falsche Eintrag mit der Tatsache zusammen hängt, dass ich für ein autoincrement Feld ein Wert eingegeben habe. was glaubt ihr ?

Die Symbole hinter marketing kann ich nicht erklären..

Würde mich über eine Antwort freuen..

Gruß
Aaron
 
Hallo,
was für ein Datenbanksystem verwendest du denn?

Also für mysql sollte das gehen:

Java:
// Anweisungen vorbereiten und Datensatz eintragen
PreparedStatement insert;

insert = (PreparedStatement) con.prepareStatement("INSERT INTO abteilung SET name='?'");
insert.setString(1,"marketing");
insert.execute();

id wird dann automatisch von deinem DBS inkrementiert...

Gruß

RedWing
 
Hallo!

Wenn du autoincrement Felder in deiner Tabelle hast musst du diese beim einem DML Statement weglassen. Dabei ist zu beachten, dass du dann natürlich die Spalten liste explizit angeben musst.

Gruß Tom
 
Hi..

Es ist eine MySQL Datenbank.
Aber das autoincrement funktioniert so nicht. s.h. Screenshot

Gruß
Aaron

@Thomas: insert.setInt( ,1); <-- so erhalte ich ein Syntax Fehler !
 
Zuletzt bearbeitet:
Hallo,

has du es denn so schon versucht?
Also ohne die Angabe des id Feldes. Siehe oben?

RedWing hat gesagt.:
Hallo,
was für ein Datenbanksystem verwendest du denn?

Also für mysql sollte das gehen:

Java:
// Anweisungen vorbereiten und Datensatz eintragen
PreparedStatement insert;

insert = (PreparedStatement) con.prepareStatement("INSERT INTO abteilung SET name='?'");
insert.setString(1,"marketing");
insert.execute();

id wird dann automatisch von deinem DBS inkrementiert...

Gruß

RedWing

Gruß

RedWing
 
Hallo!

Ich meinte das so:
Code:
CREATE TABLE fooaaaa(id INT NOT NULL AUTO_INCREMENT, data0 VARCHAR(32),data1 VARCHAR(32), PRIMARY KEY(id));
...
INSERT INTO fooaaaa (data0,data1) values (?,?)

Gruß Tom
 
.. habe euch zwar jetzt verstanden ... aber anscheinend mache ich immer noch etwas falsch.

Tabelle habe ich so angelegt:
create.executeUpdate("CREATE TABLE imobilien(id INT(10) NOT NULL AUTO_INCREMENT, name VARCHAR(32),ort VARCHAR(32), PRIMARY KEY(id))");

id
name
ort

Daher sieht meine Anfrage so aus:

PreparedStatement insert;
insert = (PreparedStatement) con.prepareStatement("INSERT INTO imobilien VALUES(?,?)");

// so versuche den Eintrag vorzunehmen:
insert.setString(1,"name");
insert.setString(2,"ort");

Fehlermeldung: java.sql.SQLException: Column count doesn't match value count at row 1

Was mache ich falsch ? .. sorry.. stehe bissel auf dem Schlauch.
 
Hallo,

versuch es doch mal so:

SQL:
INSERT INTO imobilien(name,ort) VALUES('name','ort');

bzw

Java:
insert = (PreparedStatement) con.prepareStatement("INSERT INTO imobilien(name, ort)  VALUES('?','?')");
insert.setString(1,"name");
insert.setString(2,"ort");

Gruß

RedWing
 
Zuletzt bearbeitet:
Bei diese Möglichkeit

Code:
insert = (PreparedStatement) con.prepareStatement("INSERT INTO imobilien(name, ort)  VALUES('?','?')");
insert.setString(1,"name");
insert.setString(2,"ort");

erhalte ich folgende Meldung:

Fehler: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

Gruß
Aaron
 
Zurück