Java 与DB2和jdbc的连接?
我试图使用下面的代码连接DB2,但遇到以下异常Java 与DB2和jdbc的连接?,java,jdbc,db2,Java,Jdbc,Db2,我试图使用下面的代码连接DB2,但遇到以下异常 com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ROOT.EMPLOYEE, DRIVER=3.63.123 at com.ibm.db2.jcc.am.fd.a(fd.java:679) at com.ibm.db2.jcc.am.fd.a(fd.java:60) at com
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ROOT.EMPLOYEE, DRIVER=3.63.123
at com.ibm.db2.jcc.am.fd.a(fd.java:679)
at com.ibm.db2.jcc.am.fd.a(fd.java:60)
at com.ibm.db2.jcc.am.fd.a(fd.java:127)
at com.ibm.db2.jcc.am.ho.c(ho.java:2644)
at com.ibm.db2.jcc.am.ho.d(ho.java:2632)
at com.ibm.db2.jcc.am.ho.a(ho.java:2097)
at com.ibm.db2.jcc.t4.cb.h(cb.java:141)
at com.ibm.db2.jcc.t4.cb.b(cb.java:41)
at com.ibm.db2.jcc.t4.q.a(q.java:32)
at com.ibm.db2.jcc.t4.sb.i(sb.java:135)
at com.ibm.db2.jcc.am.ho.gb(ho.java:2066)
at com.ibm.db2.jcc.am.ho.a(ho.java:3120)
at com.ibm.db2.jcc.am.ho.a(ho.java:681)
at com.ibm.db2.jcc.am.ho.executeQuery(ho.java:665)
代码:
Class.forName("com.ibm.db2.jcc.DB2Driver");
System.out.println("**** Loaded the JDBC driver");
String url = bundle.getString("db2.url");
String user = bundle.getString("db2.username");
String password = bundle.getString("db2.password");
// Create the connection using the IBM Data Server Driver for JDBC and SQLJ
Connection con = DriverManager.getConnection (url, user, password);
// Commit changes manually
con.setAutoCommit(false);
System.out.println("**** Created a JDBC connection to the data source");
// Create the Statement
Statement stmt = con.createStatement();
System.out.println("**** Created JDBC Statement object");
// Execute a query and generate a ResultSet instance
ResultSet rs = stmt.executeQuery("SELECT EMPNO FROM EMPLOYEE");
System.out.println("**** Created JDBC ResultSet object");
String empNo;
// Print all of the employee numbers to standard output device
while (rs.next()) {
empNo = rs.getString(1);
System.out.println("Employee number = " + empNo);
}
System.out.println("**** Fetched all rows from JDBC ResultSet");
// Close the ResultSet
rs.close();
System.out.println("**** Closed JDBC ResultSet");
// Close the Statement
stmt.close();
System.out.println("**** Closed JDBC Statement");
if(con!=null){System.out.println("Connection successfull with DB2");}
问题不在于连接。您需要了解如何读取DB2错误消息 在本部分中,将对问题进行解释:
SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ROOT.EMPLOYEE
换句话说,您已经建立了一个连接,在查找对象ROOT.EMPLOYEE
时,db2没有找到任何东西。错误为204,可以解释为SQL0204。您可以在db2clp或internet中查找,然后得到答案
您的问题似乎是您正在以root身份连接到数据库,而隐式模式“root”不包含EMPLOYEE表。确保使用的架构正确。并且OP不应以
根目录连接到数据库。