Java Last Insert ID 不起作用[重复]
Posted
技术标签:
【中文标题】Java Last Insert ID 不起作用[重复]【英文标题】:Java Last Insert ID is not working [duplicate] 【发布时间】: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 它们完全不同,我只是在问为什么我的代码不起作用 【参考方案1】:看起来这可能是某些版本的 mysql 驱动程序的错误。搜索 this 源代码以获取错误消息。他们没有检查 getGeneratedIds 条件。
自 2005 年以来,MySQL 有一个类似的“无法修复”bug。讨论中提到,JDBC API 的驱动程序支持该功能并不是必需的。似乎这是一个已知且未解决的问题。
【讨论】:
以上是关于Java Last Insert ID 不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用从 php 中选择 last_insert_id() 不起作用
PHP SQL 将 LAST_INSERT_ID() 赋值给一个变量