在 MySQL 中使用 statement.getGeneratedKeys() 时是不是可以获得自动生成的值?
Posted
技术标签:
【中文标题】在 MySQL 中使用 statement.getGeneratedKeys() 时是不是可以获得自动生成的值?【英文标题】:Is it possible to get a auto-generated values when using statement.getGeneratedKeys() in MySQL?在 MySQL 中使用 statement.getGeneratedKeys() 时是否可以获得自动生成的值? 【发布时间】:2013-03-25 12:33:19 【问题描述】:我正在通过 java 连接 mysql。我正在尝试插入一条记录,我使用statement.getGeneratedKeys()
查找状态,然后使用if (generatedKeys.next())
。现在我可以获得一个插入的 coulmn 值(即)我有一个名为 pass 的列,它是一个 auto_increament 列,它是我的主键,现在我想获取插入到该列中的值。可以吗??
【问题讨论】:
AFAIK,MySQL 不允许非主键列自动递增。您是否错误地标记了您的问题? @perception 我的错我错过了 :) 【参考方案1】:标准的 MySQL 连接器 J 驱动程序确实支持获取生成的密钥,是的。下面是一些示例代码:
final Connection conn ; // setup connection
final String SQL ; // define SQL template string
final PreparedStatement stmt = connection.prepareStatement(
SQL,
Statement.RETURN_GENERATED_KEYS);
int affected = stmt.executeUpdate();
if (affected > 0)
final ResultSet keySet = stmt.getGeneratedKeys();
while (keySet.next())
// these are your autogenerated keys, do something with them
System.out.println(keySet.getInt(1));
【讨论】:
我仍然收到 java.sql.SQLException: Column 'pass' not found 错误。 在迭代生成的密钥时你不会得到它。您确定您的插入语句与您的表架构不匹配吗?以上是关于在 MySQL 中使用 statement.getGeneratedKeys() 时是不是可以获得自动生成的值?的主要内容,如果未能解决你的问题,请参考以下文章
PHP/mysql:使用数组查询 MySQL 并在数组中获取结果
在 node-mysql 中使用 SSH 隧道连接到 MySQL