有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用preparedStatement插入最后一个\u插入\u id?

我在准备好的声明中插入“最后一个插入id”时遇到了困难。我知道了如何在准备好的语句中选择最后一个插入id,如下所示:

PreparedStatement getLastInsertId = con.prepareStatement("SELECT LAST_INSERT_ID()");

当我使用相同的程序在我的preparedstatement中插入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'值。有谁能帮我解决这个问题吗


共 (1) 个答案

  1. # 1 楼答案

    如果一次执行两个save操作都使用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);