簡體   English   中英

RETURN_GENERATED_KEYS在使用JDBC ODBC時不起作用

[英]RETURN_GENERATED_KEYS doesn't work using JDBC ODBC

在數據庫中插入一些數據后,我試圖獲取插入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驅動程序,而不是開發欠佳,功能不足,bug豐富的Sun ODBC橋驅動程序。 幾乎所有自重的基於服務器的RDBMS供應商都提供了一個值得下載的JDBC驅動程序,可在其主頁上下載。 只需在Google“ [供應商名稱] jdbc驅動程序下載”中找到它即可。 以下是概述:

可能是JDBC實現不能支持特殊操作。 檢查使用的JDBC驅動程序。

請嘗試以下示例,而不是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM