gpt4 book ai didi

java - Oracle DB 查询在 sqlDev 中运行,但不在 Java 程序中运行

转载 作者:行者123 更新时间:2023-12-02 00:38:26 26 4
gpt4 key购买 nike

我一直在搞乱从我的 JAVA 应用程序运行的 Oracle DB 查询。我可以成功地让它们全部在 SQL Developer 中运行。但是,当我尝试从 JAVA 应用程序执行它们时,我通常会在某些查询上收到 UpdatadbleResultSet Error/Exception

此外,有时我会收到ExhaustedResultset。正如我在底部提到的,我将重新解决问题以将其分解(当我有机会时)。我继续编辑,很快就会成为一本书。

这是为什么呢?我似乎无法查明问题所在。

某些查询成功运行,例如:

SELECT table_name 
FROM all_tables

SELECT column_name, data_length
FROM all_tab_columns
WHERE table_name = 'mytable'

但是当我尝试运行类似的东西时

SELECT length(<myColumnName>) 
FROM mytable

我收到updateableResultSetError

我将查询作为单击按钮时调用的方法来运行(示例如下)。

static void testQuery() {   
String query = "SELECT blah from blah"
String length;
ResultSet rs = db.runQuery(query);
Length = rs.getString("length(myCol)")
System.out.println(length);
}

我也尝试过while rs.next()

我只能认为,由于某种原因,我无法进入每个表,我只能拉出“更大”的图景。

编辑:解释数据库连接

我正在使用已添加到我的项目中的其他一些 jar 文件进行连接。

private static IDriver driver = null;
private static Database db = null;

然后,我在一个单独的方法中传递所有连接凭据。

private void connectDB(){
driver = new OracleDriver();
db = new Database(driver)
driver.getPassword;
driver.getetc;
driver.getEtc;
}

编辑:

当我 getstacktrace 时,我返回的是。

Ljava.lang.StatckTraceElement;(assortment of random characters).

我可能无法正确获取堆栈跟踪,因此有人可以填写我的信息。毕竟我提供了赏金。

此外,当我有时间时,我会编辑这个问题并再次分解它。

最佳答案

您的问题是您尝试更新无法更新的查询,因此出现可更新结果错误。看起来,无论谁创建数据库连接或执行查询,都在创建可更新的结果集。

您不能在可更新结果集中使用某些类型的 select:不能使用聚合函数(例如 length、min、max),不能使用 select * 等)

完整列表请参见Result Set Limitations and Downgrade Rules

关于java - Oracle DB 查询在 sqlDev 中运行,但不在 Java 程序中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com