Zeigt, wie der Auto_Increment-Wert beim Einfügen eines Datensatzes in eine Datenbank aus Java-Code mit JDBC abgerufen wird.
Sie können den zuletzt nummerierten Wert mit SELECT LAST_INSERT_ID ()
abrufen, aber Sie können ihn verwenden, wenn Sie ihn als Rückgabewert erhalten möchten.
Erstellen Sie zunächst die folgende Datenbank / Tabelle.
Bereiten Sie hier die ID-Spalte und die Char-Typ-Namensspalte vor, die die Primärschlüssel mit dem festgelegten Auto_Increment in der Testtabelle sind.
Die SQL zum Erstellen der Tabelle lautet wie folgt.
CREATE TABLE test(
id INT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
Wenn Sie die Spalteninformationen der Tabelle überprüfen (SHOW COLUMNS FROM Tabellenname), können Sie sehen, dass "Auto_Increment" in der ID-Spalte des Primärschlüssels festgelegt ist.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | int | NO | PRI | NULL | auto_increment |
name | char | NO | NULL |
Zunächst wird die Java-Quelle angezeigt.
Test.java
public class Test {
public static void main(String[] args) {
int autoIncrementKey = 0;
try {
//Treiberlast
Class.forName("com.mysql.jdbc.Driver");
//Stellen Sie eine Verbindung zu MySQL her
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/testdb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "user", "password");
String sql = "insert into test(name) values (?)";
//Anweisungserstellung
//Kehre hier zurück_GENERATED_Stellen Sie die Tasten ein
PreparedStatement stmt = con.prepareStatement(sql, java.sql.Statement.RETURN_GENERATED_KEYS);
stmt.setString(1, "XXX");
stmt.executeUpdate();
// getGeneratedKeys()Mit Auto_Holen Sie sich die inkrementierte ID
ResultSet res = stmt.getGeneratedKeys();
if(res.next()){
autoIncrementKey = res.getInt(1);
}
System.out.println(autoIncrementKey);
res.close();
stmt.close();
con.close();
} catch (Exception e){
System.out.println(e);
}
}
}
Setzen Sie beim Generieren eines PreparedStatement das zweite Argument auf java.sql.Statement.RETURN_GENERATED_KEYS.
Nach dem Ausführen der Insert-Anweisung mit stmt.exceuteUpdate () kann durch Ausführen von "stmt.getGeneratedKeys ()" die automatisch nummerierte ID abgerufen werden.
Es gibt nur wenige Möglichkeiten, Java und SQL zu verwenden, aber zur Erinnerung.
Recommended Posts