gpt4 book ai didi

java - 比例大小无效。不能小于零

转载 作者:行者123 更新时间:2023-11-29 04:04:46 24 4
gpt4 key购买 nike

我使用 spring-2.5.6 通过 org.apache.commons.dbcp.BasicDataSource 从独立应用程序连接到 Oracle 10g 数据库 (ojdbc14.jar)。当我尝试使用 public SqlRowSet queryForRowSet(String sql, Object[] args) throws DataAccessException 方法检索 SqlRowSet 时,我收到“java.sql.SQLException:无效的标度大小”。不能小于零'。

调用该表的sql是:

select CUSTAREADESC, BEGCOL, COLLENGTH from CUSTOMERAREA where upper(trim(FLEET)) = upper(trim(?)) and CUSTAREANO = ?

BEGCOL 和 COLLENGTH 列是数字数据类型,没有定义精度。

我找到了一些关于这个问题的信息,似乎是 Oracle 驱动程序与 Sun 的 com.sun.rowset.CachedRowSetImpl 实现不兼容。

Java Database Connectivity (JDBC) - Populating CachedRowSet produces SQLException: Invalid scale size

Using queryForRowSet with subquery factoring SQL gives errors

他们建议将 sql 更改为以下内容作为变通方法。

select CUSTAREADESC, (BEGCOL + 0) BEGCOL, (COLLENGTH + 0) COLLENGTH from CUSTOMERAREA where upper(trim(FLEET)) = upper(trim(?)) and CUSTAREANO = ?

有没有人知道更好的通用解决方案,该解决方案不涉及对列未定义精度的任何现有表的自定义 sql?

最佳答案

此错误是由 Oracle JDBC 驱动程序不兼容引起的。您可以通过将系统属性 oracle.jdbc.J2EE13Compliant 设置为 true 来修复它。例如,在命令行上:

java -Doracle.jdbc.J2EE13Compliant=true

关于java - 比例大小无效。不能小于零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/643280/

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