我想使用JDBC在数据库(在我的例子中是Microsoft SQL Server )中INSERT
一条记录。同时,我想获取insert ID,如何使用JDBC API来实现?
发布于 2011-06-24 13:52:21
我正在从一个基于单线程R2的应用程序中访问Microsoft SQL Server2008JDBC,并在没有使用RETURN_GENERATED_KEYS属性或任何PreparedStatement的情况下拉回最后一个ID。看起来像这样:
private int insertQueryReturnInt(String SQLQy) {
ResultSet generatedKeys = null;
int generatedKey = -1;
try {
Statement statement = conn.createStatement();
statement.execute(SQLQy);
} catch (Exception e) {
errorDescription = "Failed to insert SQL query: " + SQLQy + "( " + e.toString() + ")";
return -1;
}
try {
generatedKey = Integer.parseInt(readOneValue("SELECT @@IDENTITY"));
} catch (Exception e) {
errorDescription = "Failed to get ID of just-inserted SQL query: " + SQLQy + "( " + e.toString() + ")";
return -1;
}
return generatedKey;
}
这篇博文很好地隔离了三个主要的SQL Server“最后ID”选项:http://msjawahar.wordpress.com/2008/01/25/how-to-find-the-last-identity-value-inserted-in-the-sql-server/ -还不需要另外两个。
发布于 2015-12-14 16:39:15
如果在使用Statement.RETURN_GENERATED_KEYS
时遇到“不支持的功能”错误,请尝试执行以下操作:
String[] returnId = { "BATCHID" };
String sql = "INSERT INTO BATCH (BATCHNAME) VALUES ('aaaaaaa')";
PreparedStatement statement = connection.prepareStatement(sql, returnId);
int affectedRows = statement.executeUpdate();
if (affectedRows == 0) {
throw new SQLException("Creating user failed, no rows affected.");
}
try (ResultSet rs = statement.getGeneratedKeys()) {
if (rs.next()) {
System.out.println(rs.getInt(1));
}
rs.close();
}
其中BATCHID
是自动生成的id。
发布于 2019-05-21 18:35:58
您可以使用以下java代码来获取新插入的id。
ps = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
ps.setInt(1, quizid);
ps.setInt(2, userid);
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
lastInsertId = rs.getInt(1);
}
https://stackoverflow.com/questions/1915166
复制相似问题