我在DB2中创建了名为" TestDB
"的本地数据库,然后我创建了一个名为" TestTable
"的表.
我发现该表放在模式名称下面是" yasmin
".
我正在尝试连接到DB2
数据库,JDBC
但我得到了这个例外
R SQLException information [1/4/14 11:32:59:289 EST] 0000004d SystemErr R Error msg: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2ADMIN.TESTTABLE, DRIVER=3.61.86 [1/4/14 11:32:59:290 EST] 0000004d SystemErr R SQLSTATE: 42704 [1/4/14 11:32:59:290 EST] 0000004d SystemErr R Error code: -204 [1/4/14 11:32:59:290 EST] 0000004d SystemErr R com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2ADMIN.TESTTABLE, DRIVER=3.61.86
我在互联网上尝试了很多解决方案,就像设置架构一样,但遗憾的是不行.
这是我使用的JDBC代码
String urlPrefix = "jdbc:db2:"; String url; String user; String password; String empNo; Connection con; Statement stmt; ResultSet rs; url = urlPrefix + "//127.0.0.1:50000/TestDB"; user = "db2admin"; password = "db2admin"; try { // Load the driver Class.forName("com.ibm.db2.jcc.DB2Driver"); System.out.println("**** Loaded the JDBC driver"); // Create the connection using the IBM Data Server Driver for JDBC and SQLJ con = DriverManager.getConnection (url, user, password); // Commit changes manually con.setAutoCommit(false); System.out.println("**** Created a JDBC connection to the data source"); stmt = con.createStatement(); con.createStatement(); System.out.println("**** Created JDBC Statement object"); // Execute a query and generate a ResultSet instance rs = stmt.executeQuery("select *from TestTable"); System.out.println("**** Created JDBC ResultSet object"); } catch (ClassNotFoundException e) { System.err.println("Could not load JDBC driver"); System.out.println("Exception: " + e); e.printStackTrace(); } catch(SQLException ex) { System.err.println("SQLException information"); while(ex!=null) { System.err.println ("Error msg: " + ex.getMessage()); System.err.println ("SQLSTATE: " + ex.getSQLState()); System.err.println ("Error code: " + ex.getErrorCode()); ex.printStackTrace(); ex = ex.getNextException(); // For drivers that support chained exceptions } }
bhamby.. 11
正如@Mark Rotteveel所说,这个-204
错误来自一个丢失的物体,但是由于其他原因而失踪了.
找不到它,因为您没有为模式名称添加前缀.你在上面说它是在架构中yasmin
,但你正在联系db2admin
,所以它正试图寻找db2admin.TestTable
.
SELECT * FROM yasmin.TestTable
应该是你正在寻找的.
默认情况下,模式的搜索路径是当前连接用户的名称.你可以看到它的用途
SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1
如果要更改它,可以使用SET SCHEMA命令更改搜索路径,但通常只需在查询中包含模式名称即可.
正如@Mark Rotteveel所说,这个-204
错误来自一个丢失的物体,但是由于其他原因而失踪了.
找不到它,因为您没有为模式名称添加前缀.你在上面说它是在架构中yasmin
,但你正在联系db2admin
,所以它正试图寻找db2admin.TestTable
.
SELECT * FROM yasmin.TestTable
应该是你正在寻找的.
默认情况下,模式的搜索路径是当前连接用户的名称.你可以看到它的用途
SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1
如果要更改它,可以使用SET SCHEMA命令更改搜索路径,但通常只需在查询中包含模式名称即可.