【问题标题】:Java Last Insert ID is not working [duplicate]Java Last Insert ID 不起作用[重复]
【发布时间】:2011-12-10 01:57:40
【问题描述】:

可能重复:
How to get the insert ID in JDBC?

我试图获取最后一个插入 ID,但显然它不起作用,它不断给我一堆错误,其中一个是这个

java.sql.SQLException: Can not issue SELECT via executeUpdate().

我试图得到最后一个插入它但它不起作用,这是我的代码

public int getLastInsertID(){
        try{
        Statement statement =  conn.createStatement();
        ResultSet rs = null;
        statement.executeUpdate("SELECT LAST_INSERTED_ID", Statement.RETURN_GENERATED_KEYS);
        rs = statement.getGeneratedKeys();
        while(rs.next()){
            System.out.println(""+rs.getInt(1));
            id =    rs.getInt(1);
            JOptionPane.showMessageDialog(null,id);

        }

        }catch(Exception e){
            e.printStackTrace();
        }

        return id;
    }
}

第二个是

public void addEmployee(Personal p ,Contact c,Employee e) {
        Statement statement = null;

        String insert0 = "INSERT INTO `finalpayroll`.`users` (`emp_id`, `emp_pass`) VALUES ('2010-010122', '1231922')";
        try{
            statement = conn.createStatement();
            statement.executeUpdate(insert0);
            statement.close();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        id = getLastInsertID();

        String insert1 = "INSERT INTO personal_info (`idpersonal_info`,`First_Name`, `Middle_Initial`, `Last_Name`, `Date_Of_Birth`, `Marital_Status`, `Beneficiaries`) VALUES ("+id+",'"+p.getFirstName()+"', '"+p.getMiddleInitial()+"'" +
                "       , '"+p.getLastName()+"', '"+p.getDateOfBirth()+"', '"+p.getMaritalStatus()+"', '"+p.getBeneficiaries()+"')";
        try{
            statement = conn.createStatement();

        statement.executeUpdate(insert1);
        statement.close();
        conn.close();
        JOptionPane.showMessageDialog(null, "Employee Added!!");
        }catch(Exception ex){
            ex.printStackTrace();
        }


    }

我怎样才能得到最后插入的 id?我的方法有什么问题?

【问题讨论】:

  • @BalusC 它们完全不同,我只是在问为什么我的代码不起作用

标签: java mysql jdbc last-insert-id


【解决方案1】:

看起来这可能是某些版本的 mysql 驱动程序的错误。搜索 this 源代码以获取错误消息。他们没有检查 getGeneratedIds 条件。

自 2005 年以来,MySQL 有一个类似的“无法修复”bug。讨论中提到,JDBC API 的驱动程序支持该功能并不是必需的。似乎这是一个已知且未解决的问题。

【讨论】:

    猜你喜欢
    • 2014-08-07
    • 1970-01-01
    • 2020-03-26
    • 2020-07-25
    • 2016-11-15
    • 2021-11-24
    • 2012-04-11
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多