java - 如何使用 preparedStatement 插入 last_insert_id?

标签 java mysql

我在准备好的语句中插入“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()

获取生成的 ID 的方法
    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/

相关文章:

java - 使用Selenium WebDriver java在用户名和密码文本框之间切换并输入相应的值

java - 无法使用 GSON、AutoValue 和 Retrofit 2 反序列化备用名称

java - 带队列的信号量

java - 如何升级 javax.naming.* 和 javax.xml.* 导入以与 java 10 兼容

mysql - 使用 SQL Workbench/j 与 MySQL 的 SSL 连接

mysql - 使用 'NOT BETWEEN' 约束查询不同的记录列表

mysql - 为什么这个 MySQL 语句要从这个 JOIN 的两个表中提取数据?

python - sqlalchemy:在列上调用 STR_TO_DATE

mysql - 如何从mysql数据库中删除旧记录

java - 是否可以在我的 S3 lambda 函数中创建文件?