MySQL INSERT schlägt nicht fehl, fügt aber auch nichts ein

Sich

Mitglied
Guten Morgen an alle,

ich sitze hier gerade an einem Problem, dass ich einfach nicht vertsehe und deswegen auch nicht beseitigen kann.
Ich versuche Mittels eines PreparedStatement und INSERT in eine Tabelle mit Nutzern, einen neuen Nutzer einzutragen (PS: ich weiß das passwörter gehashed werden ;-) ). Es wird jedoch de facto nichts in die Tabelle eingetragen, obwohl keine Ausnahme oder sonst eine Fehlermeldung auftritt.

Ich habe Debugausgaben eingefügt, die (so wie ich das verstehe eigentlich nahe legen, dass die Zeile eingetragen wurde?!):
ANZAHL-INSERTS: liefert 1
Zuletzt eingetragene ID: liefert letzte ID++ (also obwohl nichts eingetragen wird, wird da hochgezählt)
nickname: beinhaltet auch den letzten "eingetragenen" Namen

Hier der Java-Code mit Debug-Outs
Java:
try {
			
			Class.forName("org.gjt.mm.mysql.Driver").newInstance();
			
			try {
				
				UserInformation user = new UserInformation(name, password);

				String url = "jdbc:mysql://" + dbHostname + ":" + dbPort + "/" + dbDBName;

				Connection conn = DriverManager.getConnection(url, dbLogInName, dbLogInPassword);
				conn.setAutoCommit(false);
				
				String sqlCommand = "INSERT INTO users (id, nickname, password) VALUES (null, ?, ?)";
				PreparedStatement ps = conn.prepareStatement(sqlCommand, Statement.RETURN_GENERATED_KEYS);

				// Parameter werden übergeben
				ps.setString(1, user.getName());
				ps.setString(2, user.getPassword());
				System.out.println("ANZAHL INSERTS: " + ps.executeUpdate());
				ResultSet rs = ps.getGeneratedKeys();
				rs.next();
				System.out.println("Zuletzt eingetragene ID: " + rs.getInt(1));
	            
				String sqlCommand2 = "SELECT * FROM users";
				PreparedStatement ps2 = conn.prepareStatement(sqlCommand2);

				ResultSet rs2 = ps2.executeQuery(); // Statement wird ausgeführt.

				rs2.last();
				System.out.println(rs2.getNString("nickname"));
				ps2.close();
				
				ps.close();
			} catch (SQLException sqle) {
				System.err.println("SQLException: " + sqle.getMessage());
				System.err.println("SQLState: " + sqle.getSQLState());
				System.err.println("VendorError: " + sqle.getErrorCode());
			}
		} catch (Exception e) {
			System.err.println("..Unable to load MySQL-Driver.");
			e.printStackTrace();
		}

Hoffe jemand kann mir Helfen, schonmal vielen Dank im Voraus!

Gruß
Sich
 
C

Camino

Gast
Java:
String sqlCommand = "INSERT INTO users (id, nickname, password) VALUES (null, ?, ?)
Ist "id" der Primary Key? Keine Ahnung, ob es daran liegen könnte, aber versuch doch mal anstall "null" für den Primary Key "DEFAULT" einzugeben.
 

Sich

Mitglied
Java:
String sqlCommand = "INSERT INTO users (id, nickname, password) VALUES (null, ?, ?)
Ist "id" der Primary Key? Keine Ahnung, ob es daran liegen könnte, aber versuch doch mal anstall "null" für den Primary Key "DEFAULT" einzugeben.

Ja, "id" ist der Primärschlüssel, habe es auch mit "DEFAULT" probiert, mit dem selben Ergebnis: der getGeneratedKeys() liefert wieder die letzte id + 1, etc. aber in der Tabelle ändert sich nichts..
 
G

Gast2

Gast
Java:
String sqlCommand = "INSERT INTO users (id, nickname, password) VALUES (null, ?, ?)
Ist "id" der Primary Key? Keine Ahnung, ob es daran liegen könnte, aber versuch doch mal anstall "null" für den Primary Key "DEFAULT" einzugeben.

nein - einfach weg lassen ... den füllt die DB selber aus

Java:
String sqlCommand = "INSERT INTO users (nickname, password) VALUES (?, ?)

hand, mogel
 
M

mvitzatwork

Gast
Vor allem wo der TO
Java:
...
Connection conn = DriverManager.getConnection(url, dbLogInName, dbLogInPassword);
conn.setAutoCommit(false);
...
aufruft.

Weiterhin ist
Java:
...
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
...
veraltet. Du solltest da den neuen Driver ("com.mysql.jdbc.Driver") nehmen.
 

Sich

Mitglied
nein - einfach weg lassen ... den füllt die DB selber aus

Java:
String sqlCommand = "INSERT INTO users (nickname, password) VALUES (?, ?)

hand, mogel

Das hatte ich zu Anfang auch aber dann umgeschrieben, da dachte, dass da vielleicht der Fehler lag. Es geht aber halt auch nicht in dieser Variante.

Die Tabelle auslesen und erreichen geht aus der Java-App ohne Probleme.
Der DB-User hat die Rechte: INSERT, SELECT, UPDATE, EXECUTE das sollte ja eigentlich auch reichen, zumindest kann der außerhalb des Javaprogramms Daten einfügen.

Danke für eure bisherigen Tipps!
 
M

mvitzATwork

Gast
Meinen Post hattest du gelesen?

Entweder du entfernst setAutoCommit(false) oder du commitest nach dem Insert über conn.commit(); manuell!
 

Sich

Mitglied
Meinen Post hattest du gelesen?

Entweder du entfernst setAutoCommit(false) oder du commitest nach dem Insert über conn.commit(); manuell!

Nein, hatte ich in der Tat noch nicht :)
Aber daran hats gelegen, wenn ich jetzt selber das "commit" ausführe, wird auch in die Tabelle eingetragen.
Zudem habe ich auch den Treiber erneurt, wusste nicht, dass der andere nicht mehr aktuell war.
Also vielen Dank für den Hinweis und Deine Hilfe!

mogel hat gesagt.:
musiKk hat gesagt.:
Aber doch nur, wenn die Spalte mit AUTO_INCREMENT angelegt wurde, oder? Ich kann jedenfalls nicht finden, dass das per Default aktiv ist.
ja klar - ich ging jetzt davon aus das der OP das auch entsprechend in der Tabelle hinterlegt hat (aufgrund des Spaltennamens)

Ja, das id-Feld ist AUTO_INCREMENT.

Vielen Dank, auch für eure Hilfe!

Gruß
Sich
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Derby/JavaDB INSERT auf FOREIGN KEY schlägt fehl Datenbankprogrammierung 2
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
O HOW TO INSERT PRIMARY INTO ANOTHER TABLE AND USE IT AS FOREIGN KEY TO DISPLAY DATA IN A RELATIONSHIP Datenbankprogrammierung 3
G Eine Spalte in xampp als Typ array erstellen - ein array mit "insert" hinzufügen. Datenbankprogrammierung 3
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
A MySQL Select und Insert in Java Datenbankprogrammierung 15
S PostgreSQL Bytea INSERT Datenbankprogrammierung 8
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5
D Insert Methode per Servlet Datenbankprogrammierung 2
D Insert Methode per Servlet Datenbankprogrammierung 0
D SQLite INSERT OR REPLACE INTO macht neuen Eintrag?! Datenbankprogrammierung 2
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
A Oracle insert Array in DB Datenbankprogrammierung 7
C MySQL JTable in JScrollPane nach insert aktualisieren Datenbankprogrammierung 3
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10
M JAVA Derby INSERT probleme Datenbankprogrammierung 12
Y MySQL Eclipselink Insert JSF Beispiel gesucht Datenbankprogrammierung 2
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
M Derby/JavaDB Derby SQL Insert mit AUTO_INCREMENT, welche ID wurde vergeben? Datenbankprogrammierung 6
D HSQLDB INSERT INTO in einer For Schleife mit selber ID, machbar? Alternative? Datenbankprogrammierung 7
J SQL-Statement Meine insert befehle funktionieren nicht und ich weiß nicht wo der fehler liegt Datenbankprogrammierung 5
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P MySQL INSERT / UPDATE MySQL - perStoredProcedure oder direkt im Code Datenbankprogrammierung 3
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
V HSQLDB Insert in eine Tabelle mit Autoincrement Datenbankprogrammierung 2
B MS SQL: Insert LOB Datenbankprogrammierung 4
M MySQL INSERT will einfach nicht funktionieren Datenbankprogrammierung 9
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
R vor/nach INSERT mysql-SETS absetzen Datenbankprogrammierung 2
C insert into mit between-Anweisung Datenbankprogrammierung 10
F Insert into Access Datenbankprogrammierung 3
S Nochmals: ID ermitteln nach Insert Datenbankprogrammierung 2
S ID Wert von Insert über jdbcTemplate.update Datenbankprogrammierung 3
O Viele Verbindungen-Exception bei insert Daten zur MySQL-Datenbank Datenbankprogrammierung 2
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
E Derby/JavaDB Keine Reaktion von "insert into" im ActionListener Datenbankprogrammierung 22
A Oracle Unbekannter Fehler bei insert Befehl Datenbankprogrammierung 3
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
Kenan89 Insert ohne Auswirkung Datenbankprogrammierung 7
B MySQL myBatis INSERT Datenbankprogrammierung 13
E Access Datenbank mit Insert befüllen Datenbankprogrammierung 5
M Datenbankverbindung zu langsam beim Insert? Datenbankprogrammierung 6
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
L H2 Auto INC Primary Key & Insert Datenbankprogrammierung 8
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14
F H2:Wie kann man insert eine Reihe "int" wert als blob in table? Datenbankprogrammierung 12
S Probleme mit INSERT Befehl Datenbankprogrammierung 11
L MySQL Prepared Statement batch langsamer als bulk insert? Datenbankprogrammierung 10
M Insert in Table mit 250 Feldern Datenbankprogrammierung 2
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
A Insert Methode Syntaxfehler Datenbankprogrammierung 2
G INSERT DATE in Oracle-DB Datenbankprogrammierung 11
G ODBC Insert und gleich danach Selects Datenbankprogrammierung 8
Iron Monkey Insert into Spalte ID AUTO_INCREMENT Datenbankprogrammierung 7
C ID-Rückgabe bei INSERT Datenbankprogrammierung 5
D mysql insert - performance/robustheit, "best practice" Datenbankprogrammierung 15
M Hibernate: Insert statt Update Datenbankprogrammierung 8
C Rückgabe ob INSERT erfolgreich Datenbankprogrammierung 11
H Batch Update/Insert Datenbankprogrammierung 4
E Insert oder Update- Prüfung Datenbankprogrammierung 3
K DB2 Insert mit Subselect Fehler Datenbankprogrammierung 2
M Derby insert, ID auslesen Datenbankprogrammierung 3
W Problem bei Insert mit JDBC auf MS-SQL-Server 2005 Datenbankprogrammierung 7
G Frage zum Insert-Statement Datenbankprogrammierung 2
R Probleme mit Insert Datenbankprogrammierung 2
D Problem: Prepared Statement (Insert) funktioniert nicht. Datenbankprogrammierung 3
M Insert Update usw. Datenbankprogrammierung 2
P Insert into mit zwei Datenbanken Datenbankprogrammierung 3
S Insert mit Select Datenbankprogrammierung 6
G INSERT-STATEMENT Datenbankprogrammierung 6
M insert in 2 tabellen Datenbankprogrammierung 7
J Insert auf Access DB funktioniert nicht Datenbankprogrammierung 5
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
V Fehlermeldung beim Insert Datenbankprogrammierung 16
S Insert into , executeupdate oder executequery Datenbankprogrammierung 3
B PrepareStatement "Insert into" fehlermeldung Datenbankprogrammierung 13
D Insert Oracle BLOB Datenbankprogrammierung 1
T ibatis + "generated p-key" nach insert? Datenbankprogrammierung 24
G Herausfinden des Primary Keys nach INSERT-Kommando? Datenbankprogrammierung 4
G INSERT abfragen ob erfolgreich? Datenbankprogrammierung 5
D INSERT String enthält ' wie kann man das Escapen? Datenbankprogrammierung 4
T INSERT-Befehl in Java für Oracle Datenbankprogrammierung 4
Y Hibernate - Datum Insert Datenbankprogrammierung 7
D ODBC Zugriff auf MDB-Datenbank, Insert Into ohne Funktion Datenbankprogrammierung 2
U INSERT INTO von 2 Textfeldern Datenbankprogrammierung 6
D Syntaxfehler in der INSERT INTO Anweisung Datenbankprogrammierung 2
F JAVA & MySQL : INSERT INTO DB ! Datenbankprogrammierung 2
D Problem mit INSERT INTO Datenbankprogrammierung 19
S insert into table Datenbankprogrammierung 8
S Insert in Datenbank Datenbankprogrammierung 15
G Insert-anweisung mehrere Varianten eine geht Datenbankprogrammierung 2
P frage zu "" bei INSERT STATEMENTS Datenbankprogrammierung 2
K frage zum ausführen eines INSERT statements Datenbankprogrammierung 16
K INSERT INTO bei Windows 2005 SQL Server Standard Edition . Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben