场景就是这样。用户将指定数据库表名称,系统将检索并显示存储在指定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是user指定的任何表名。问题是有一个用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数据类型的列。
有任何建议来处理这种情况吗?
答案 0 :(得分: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