Java 如何通过JDBC返回MySQL中插入的行的自动递增的BIGINT键?
我有一个表,比如说Java 如何通过JDBC返回MySQL中插入的行的自动递增的BIGINT键?,java,mysql,jdbc,Java,Mysql,Jdbc,我有一个表,比如说Users,带有一个BIGINT类型的自动递增主键 在Java中,我希望 向用户插入一行 返回插入的行的键 由于Users的键字段是Long并且executeBatch()返回一个整数数组,因此我尝试了以下内容,没有太多期望 String query2 = "INSERT INTO Users (name, status) VALUES (?, ?); " + "SELECT LAST_INSERT_ID();"; // ..
Users
,带有一个BIGINT类型的自动递增主键
在Java中,我希望
- 向
用户插入一行
- 返回插入的行的键李>
Users
的键字段是Long
并且executeBatch()
返回一个整数数组,因此我尝试了以下内容,没有太多期望
String query2 = "INSERT INTO Users (name, status) VALUES (?, ?); "
+ "SELECT LAST_INSERT_ID();";
// ... code deleted for clarity
int [] tmp = pStat.executeBatch();
此代码返回的数组为空
如何在MySQL中实现这一点
我已经看到了和其他一些相关的讨论。您需要传递
语句。在创建preparedstatement
时,将生成的\u键作为参数之一返回,请查看javadoc:
autoGeneratedKeys—指示是否自动生成关键帧的标志
应该归还;语句之一。返回\u生成的\u键或
Statement.NO_生成的_键
代码如下所示:
PreparedStatement pStat = connection.prepareStatement(SQL_INSERT,
Statement.RETURN_GENERATED_KEYS);
执行语句后,可以通过getGeneratedKeys()
方法(javadoc)获取密钥:
ResultSet rsKeys = statement.getGeneratedKeys();
//Iterate the resultset using next