【问题标题】:Select BigSerial Column Data from Informix Table从 Informix 表中选择 BigSerial 列数据
【发布时间】:2010-01-26 17:30:32
【问题描述】:

剧情就是这样。用户指定一个数据库表名,系统将检索并显示存储在指定informix数据库表中的所有数据。

Class.forName("com.informix.jdbc.IfxDriver");

Connection conn = DriverManager.getConnection(connUrl)
Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("select * from an_ifx_table");

an_ifx_table 是用户指定的任何表名。问题是有一个使用 BigSerial 数据类型定义的列。所以,代码总会抛出异常:

java.sql.SQLException: bigserial
    at com.informix.jdbc.IfxSqli.a(IfxSqli.java:3204)
    at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3518)
    at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2353)
    at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2269)
    at com.informix.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1428)
    at com.informix.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1401)
    at com.informix.jdbc.IfxResultSet.a(IfxResultSet.java:204)

由于系统从哪个表中检索数据将由用户指定,我们不能跳过或强制转换具有 BigSerial 数据类型的列。

对处理这种情况有什么建议吗?

【问题讨论】:

  • 添加你的操作系统和JDBC驱动的版本信息。

标签: jdbc informix


【解决方案1】:

我刚刚创建了带有SERIAL8 列的表,并用一些数据填充了它,我可以从 ResultSet 中读取所有数据。

也许您的 JDBC 驱动程序太旧了?

我使用来自JDBC.3.50.JC5.tar 的 JDBC 驱动程序。您也可以尝试 JDBC-ODBC 桥接器。安装 Informix ClientSDK,创建 ODBC 源,然后作为驱动使用:

sun.jdbc.odbc.JdbcOdbcDriver

作为connUrl:

jdbc:odbc:[ODBC_source_name]

在我的 Windows 机器上我使用 clientsdk.3.50.TC5.WIN.zip,在 Linux 上我使用 clientsdk.3.50.UC5.LINUX.tar

【讨论】:

  • 谢谢朋友!我刚检查过。我的 Informix JDBC 驱动程序已过时。刚刚下载了 JDBC.3.50.JC5.tar 并进行了测试。现在一切正常。
猜你喜欢
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2018-02-06
相关资源
最近更新 更多