在我的数据库中插入一些数据后,我正在尝试获取插入ID。
String sql = "INSERT INTO ADI.DUMMY(dummy_data) VALUES('from database logger')";
PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
int extUptReturn = ps.executeUpdate(sql);
但我得到了这个例外:
Java exception: ''java.lang.UnsupportedOperationException'';
thrown from class name: ''sun.jdbc.odbc.JdbcOdbcConnection'', method name: ''prepareStatement'', file: ''JdbcOdbcConnection.java'', line: '1762'
答案 0 :(得分:7)
ODBC桥驱动程序不支持它。无所事事。要么更换驱动器,要么使用它。我只使用真正的 JDBC驱动程序,而不是缺乏开发,缺少功能,缺陷丰富的Sun ODBC桥驱动程序。几乎所有备受推崇的基于服务器的RDBMS供应商都在其主页上提供了一个完整的JDBC驱动程序供下载。只需Google“[vendorname] jdbc驱动程序下载”即可找到它。这是一个概述:
/java
文件夹中。答案 1 :(得分:0)
可能是JDBC实现无法支持特定的操作。 查看使用的JDBC驱动程序。
答案 2 :(得分:0)
尝试此示例而不是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();
}
BRANCHID是自动生成的ID