我在准备好的语句中插入“last_insert_id”时遇到困难。我知道如何在准备好的语句中选择 last_insert_id,如下所示:
PreparedStatement getLastInsertId = con.prepareStatement("SELECT LAST_INSERT_ID()");
当我使用相同的过程在我的准备语句中插入 last_insert_id 时,如下所示:
1. PreparedStatement pst = con.prepareStatement("insert into introducer_table values(?,?,?,?)");
2.
3. //introducer details into database
4. pst.setString(1,LAST_INSERT_ID());
5. pst.setString(2, nameofintroducer);
6. pst.setString(3, accountno);
7. pst.setString(4, signofintroducer);
我在第一列中得到 'null' 值。任何人都可以帮助我解决这个问题
最佳答案
如果您一次执行两个保存操作,请使用 getGeneratedKeys()
,这很像 java。
我不是 SQL 高手,但在这里我找到了一种使用 getGeneratedKeys()
long generatedId= 0L;
statement = con
.getConnection()
.prepareStatement(
"insert into new_user set name= ? , contact= ? , ....",
statement.RETURN_GENERATED_KEYS);
statement.setString(1, "examplename");
statement.setString(2, "examplecontact");
------
statement.executeUpdate();
ResultSet generatedKeys = statement.getGeneratedKeys();
if (generatedKeys.next()) {
generatedId = generatedKeys.getLong(1);// here is your generated Id , use it to insert in your introducer_table
}
PreparedStatement pst = con.prepareStatement("insert into introducer_table values(?,?,?,?)");
//introducer details into database
pst.setString(1, generatedId);
pst.setString(2, nameofintroducer);
pst.setString(3, accountno);
pst.setString(4, signofintroducer);
关于java - 如何使用 preparedStatement 插入 last_insert_id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21495637/