收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 JDBC访问DB2,参数正确,但是提示SQLCODE=-204, SQLSTATE=42704

 这个问题是我发的帖子

http://topic.csdn.net/u/20091126/10/3a1be800-8b57-4042-a0ce-5fb582fde515.html

 

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 "); 错误提示: Java code 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,? 还需要有什么特殊的设置么?

 

另一种处理方法

public static void main(String[] args) { String sDBDriver = "com.ibm.db2.jcc.DB2Driver"; String sConnDataBase = "jdbc:db2://127.0.0.1:50000/TESTRA"; Properties properties = new Properties(); properties.setProperty("user","TEST"); properties.setProperty("password","198411"); properties.setProperty("currentSchema","RA"); Connection con; Statement stmt; ResultSet rs; try { Class.forName(sDBDriver); con = DriverManager.getConnection(sConnDataBase, properties); stmt = con.createStatement(); rs = stmt.executeQuery("select * from TB_ADMIN"); while(rs.next()){ System.out.println("F1=" + rs.getString(1)+" "+rs.getString(2)+ " "+rs.getString(3)+" "+rs.getString(4)+" "+rs.getString(5)+ " "+rs.getString(6)+" "+rs.getString(7)); } rs.close(); stmt.close(); con.close(); } catch(Exception e) { e.printStackTrace(); } } 这样子就可以查出来,需要加入用户的schema

 

 

凑合的解决方法

按理说一个用户可以创建多个SCHEMA,我也不知道怎么做了。
只好用一个蠢方法来处理了,把数据库名称和schema还有用户名都建成一样的,
我现在都建成了TEST,成功了,没有别的办法,先凑合用了

 

 

你可能感兴趣的:(数据库)