在我的数据库中插入一些数据后,我试图获取插入 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'
最佳答案
ODBC 桥驱动程序不支持它。没什么可反对的。要么更换驱动程序,要么接受它。我只会使用真正的 JDBC 驱动程序,而不是开发不完善、缺乏功能、错误多的 Sun ODBC 桥接驱动程序。几乎所有自尊的基于服务器的 RDBMS 供应商都在其主页上提供了完全值得下载的 JDBC 驱动程序。只需谷歌“[供应商名称] jdbc 驱动程序下载”即可找到它。这是一个概述:
- MySQL JDBC driver
- PostgreSQL JDBC driver (注意:旧版本也不支持生成的 key )。
- Oracle JDBC driver (注意:旧版本也不支持生成的 key )。
- MSSQL JDBC driver (或者性能更好的 jTDS JDBC driver )
- DB2 JDBC 驱动程序在 IBM 的在线森林中很难找到,但它通常已经包含在 DB2 安装的
/java
文件夹中。 - UCanAccess Microsoft Access 数据库的驱动程序(更多详细信息 here )。
关于java - RETURN_GENERATED_KEYS 不适用于 JDBC ODBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2249600/