我在DB2中创建了名为“testdb
”的本地数据库,然后创建了名为“testtable
”的表。
我发现该表的模式名为“yasmin
”。
我试图使用JDBC
连接到DB2
数据库,但出现了这个异常
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
我在internet上尝试了许多解决方案,比如set模式,但不幸的是都不起作用。
这是我使用的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
}
}
正如@Mark Rotteveel所说,-204
错误来自一个丢失的对象,但它丢失的原因不是他所说的。
没有找到它,因为您没有用架构名称作为前缀。上面您说它在模式Yasmin
中,但是您连接的是db2admin
,所以它试图查找db2admin.testtable
。
SELECT * FROM yasmin.TestTable
应该是你要找的。
SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1
如果要更改它,可以使用SET SCHEMA命令更改搜索路径,但通常只在查询中包含架构名称更容易。
谁能告诉我问题的原因,非常感谢! ps:DB2版本为9.5
我对DB2比较陌生,但对SQL不熟悉。我在从中减去几分钟后尝试语句时遇到以下错误: 我遇到的错误是: DB2 SQL 错误: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=TCCAWZTXD;选择*;,驱动程序=3.66.46 如何修复此错误?
我的代码: 请帮助,因为这是在生产。。。
我尝试将java应用程序中的值和表1中的值插入表2。我得到以下错误(db2 z/os): 因此,我想在 java 应用程序中生成的值插入到 TABLE2 中,并将 TABLE1 中的两个值插入。无需将这两个值导入应用程序。我做错了什么?
在尝试使用Type2驱动程序获取连接时。