在 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 并在数组中获取结果

何时在 MYSQL 中使用 Sequelize?

mac上怎么安装mysql后怎么使用

在 node-mysql 中使用 SSH 隧道连接到 MySQL

如何在Ubuntu 16.04中使用XAMPP在Rails中使用MySQL

使用 NodeJS 在 MySQL 中运行 SQL 文件