So führen Sie zusammengesetzte sql-Abfragen in java?
Wie kann ich führen Sie die folgende Abfrage und erhalten ein Ergebnis über vorbereitete Anweisung:
INSERT INTO vcVisitors (sid) VALUES (?); SELECT LAST_INSERT_ID();
Ist es ein Weg, um auszuführen, zwei Aussagen auf einmal?
Habe ich versucht, Folgendes zu tun:
Connection con = DbManager.getConnection();
PreparedStatement ps = con.PrepareStatement(
"INSERT INTO vcVisitors (sid) VALUES (?); SELECT LAST_INSERT_ID();");
ps.setInt(1, 10);
ResultSet rs = ps.exequteQuery();
rs.next();
return rs.getInt("LAST_INSERT_ID()");
aber es gibt mir eine Fehlermeldung, dass executeQuery kann nicht, ausführen einer solchen Abfrage,
Ich habe auch versucht zu ersetzen executeQuery durch die folgenden:
ps.execute();
rs = ps.getResultSet();
aber es gibt mir die SQL-syntax-Fehler:
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near 'SELECT LAST_INSERT_ID()' at line 1
aber es gibt keine Probleme mit der Ausführung der Abfrage
"INSERT INTO vcVisitors (sid) VALUES ('10'); SELECT LAST_INSERT_ID();" direkt aus der mysql-Konsole.
Ich glaube nicht, dass das möglich ist. Vor allem nicht mit einem
INSERT
und ein SELECT
.InformationsquelleAutor tsds | 2011-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während der Aktualisierung (einfügen) der Daten verwenden
executeUpdate
stattexecuteQuery
. Versuchen Sie es ausführenSELECT LAST_INSERT_ID()
als weitere Abfrage.Aber es ist nicht tragbar Abfrage. Ich schlage vor, mit
Statement.getGeneratedKeys
statt. Bitte schauen Sie hier: JDBC (MySQL) Abruf von AUTO_INCREMENT-Spaltenwerten.Hier ein Beispiel, richtig eingesetzt, LAST_INSERT_ID():
und hier das gleiche mit getGeneratedKeys:
+1 für die Anzeige der Nutzung von getGeneratedKeys()
InformationsquelleAutor zacheusz
Wie andere schon gesagt haben, das funktioniert nicht. Aber wie es aussieht wollen Sie einfach nur die ID der letzten insert. Um dies zu erreichen, können Sie die
getGeneratedKeys()
Methode derAussage
Klasse.InformationsquelleAutor vstm
Versuchen mit:
Aber zwei Fragen sind immer so laufen, als zwei Abfragen.
InformationsquelleAutor Jonas