关于网友提出的“ JDBC访问DB2,参数正确,但是提示SQLCODE=-204, SQLSTATE=42704,”问题疑问,本网通过在网上对“ JDBC访问DB2,参数正确,但是提示SQLCODE=-204, SQLSTATE=42704,”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: JDBC访问DB2,参数正确,但是提示SQLCODE=-204, SQLSTATE=42704,
描述:
Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection conn = getconn("jdbc:db2://127.0.0.1:50000/TESTRA", "TEST", "123456");
ResultSet rs = stmt.executeQuery("select *from TB_ADMIN ");
错误提示:
Exception in thread "main" com.ibm.db2.jcc.a.bn: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=TEST.TB_ADMIN, DRIVER=3.51.90
分析:
-204
42704
没有定义的对象名
需要查 DB2ADMIN这个schema下,是否有TB_ADMIN这个表。
但是我现在的schema名称都是RA
数据库名称是TESTRA
用户名是TEST
密码123456
使用toad工具查看发现数据库中表是这样的,toad使用上述参数是可以正常连接访问的,
"RA"."TB_ADMIN",是schema为打头的,我的JDBC组合中为什么变成了用户名打头呢TEST.TB_ADMIN,?
还需要有什么特殊的设置么?
解决方案1: 貌似LS正确,LZ结果怎样了
解决方案2: ResultSet rs = stmt.executeQuery("select *from DB2ADMIN.TB_ADMIN ");
改成这样
解决方案3: 是不是你的Test用户没有对TB_ADMIN表的操作权限
解决方案4: Connection con=DriverManager.getConnection(url, user, password)
这种好用
解决方案5: 你连接数据库的用户是TEST吧,jdbc默认的会将你的用户名作为默认的schema的,所以你需要指定schema的名字,或者在查询的时候,先set schema = XXXX,建议你还是在表名前加上schema的名字。因为一个数据库中可能有很多不同的schema,好方便管理。
解决方案6: