【发布时间】:2016-06-29 23:08:07
【问题描述】:
我已经写了一个方法来获取一个用于 jdbc 连接和查询执行的 DB2 数据源实例
public static DataSource getDB2DataSource() {
String [] db2Details= getDB2Details();
DB2DataSource dataSource = new DB2DataSource();
//DB2SimpleDataSource dataSource = new DB2SimpleDataSource ();
dataSource.setUser("TESTUSER");
dataSource.setPassword("TESTPASSWD");
dataSource.setServerName("localhost");
dataSource.setDatabaseName("TESTDB");
dataSource.setPortNumber(50000 ); //
dataSource.setCurrentSchema("DB2TEST");
dataSource.setDriverType(4);
return dataSource;
}
并尝试在普通类型 jdbc 中执行 SQL 查询
Connection conn = dbSource.getConnection();
String qryString = "SELECT NAME FROM EMPLOYEE where ID = 4 FOR FETCH ONLY WITH UR";
Statement stmnt = conn.createStatement();
ResultSet rSet = stmnt.executeQuery(qryString);
while (rSet.next() )
{
System.out.println ("ID : " + rSet.getString("NAME"));
}
执行此操作时出现错误
:DB2 SQL 错误:SQLCODE:-204,SQLSTATE:42704,SQLERRMC:TESTUSER.EMPLOYEE
现在我已经通过下面的语句在数据源中设置了架构
dataSource.setCurrentSchema("DB2TEST");
但它似乎不是以这种方式设置架构。 我想了解我缺少什么。
----更新----
如果我使用 DB2SimpleDataSource 而不是 DB2DataSOurce 似乎。 setCurrentSchema 工作得很好。 8.1版本的驱动好像有问题
顺便说一句,我已经知道我可以通过执行语句 SET 来设置架构 架构如下
stmnt.executeUpdate("SET SCHEMA DB2TEST");
以这种方式设置架构似乎不太合适。 此外,在从数据源获取的 Connection 对象上设置架构也不是一个选项,因为我需要将 DataSource 的实例传递给我的方法。
【问题讨论】:
-
在获得连接后尝试在连接上发出
setSchema(),而不是在数据源上发出。 -
我需要在数据源上做。我正在尝试测试我的代码,我需要传递数据源对象。也没有用于连接的 setSchema。
-
嗯,这很好。我解决了 setSchema 部分。项目中使用的 JRE 似乎是 WebSphere JRE,它没有用于连接的 setSchema。
-
通过 setCUrrentSchema 设置时 dataSource 没有采用模式,这很奇怪