RETURN_GENERATED_KEYS无法使用JDBC ODBC

时间:2010-02-12 04:03:10

标签: java jdbc

在我的数据库中插入一些数据后,我正在尝试获取插入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'   

3 个答案:

答案 0 :(得分:7)

ODBC桥驱动程序不支持它。无所事事。要么更换驱动器,要么使用它。我只使用真正的 JDBC驱动程序,而不是缺乏开发,缺少功能,缺陷丰富的Sun ODBC桥驱动程序。几乎所有备受推崇的基于服务器的RDBMS供应商都在其主页上提供了一个完整的JDBC驱动程序供下载。只需Google“[vendorname] jdbc驱动程序下载”即可找到它。这是一个概述:

答案 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