Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过JDBC返回MySQL中插入的行的自动递增的BIGINT键?_Java_Mysql_Jdbc - Fatal编程技术网

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