为什么 GridDB 的 JDBC 驱动程序会抛出 JDBC_OPTIONAL_FEATURE_NOT_SUPPORTED 错误?

问题描述 投票:0回答:1

我正在开发一个 Java 应用程序,使用 GridDB 作为数据库和 GridDB的 JDBC 驱动程序。在执行 SQL 查询来检索自动生成的密钥时,我遇到以下异常:

java.sql.SQLFeatureNotSupportedException: JDBC_OPTIONAL_FEATURE_NOT_SUPPORTED
at com.toshiba.mwcloud.gs.sql.internal.StatementAdapter.getGeneratedKeys(StatementAdapter.java:123

    
  1. 数据库: GridDB 5.1 CE

  2. JDBC 驱动程序: GridDB JDBC 驱动程序版本 5.1

  3. 执行查询:

Connection connection = DriverManager.getConnection("jdbc:gs://Farwa:20001/default", "GridDB", "admin786");
String query = "INSERT INTO Customers (Customer_ID, Customer_name) VALUES (1, Ali)";
PreparedStatement preparedStatement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, "Value1");
preparedStatement.setString(2, "Value2");
int rowsAffected = preparedStatement.executeUpdate();
ResultSet generatedKeys = preparedStatement.getGeneratedKeys();
if (generatedKeys.next()) {
    System.out.println("Generated Key: " + generatedKeys.getInt(1));
}
CREATE TABLE Customers (
    Cusomter_ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    Customer_Name VARCHAR2(50)
    
);

问题:

发生错误是因为 GridDB JDBC 驱动程序不支持

getGeneratedKeys()
方法。

griddb
1个回答
0
投票

生成的键是声明为生成的列的值;例如各种 SQL 方言中的 IDENTITY、AUTO_INCRMENT 等。

GridDB 的 SQL 不支持任何这种性质的列类型。 因此,当您尝试调用

SQLFeatureNotSupportedException
时,JDBC 驱动程序抛出
getGeneratedKeys
是适当的。


在您的问题中,您向我们提供了下表声明。

CREATE TABLE Customers (
    Cusomter_ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    Customer_Name VARCHAR2(50)
    
);
  1. 根据此处描述的 GridDB SQL 语法,这是无效的。 (检索于2024-12-18)

  2. 第一栏名称中的拼写错误让我相信这不是“真实的”。

© www.soinside.com 2019 - 2024. All rights reserved.