gpt4 book ai didi

java - 在 JDBC 中的 DB2 DataSource 中设置当前模式

转载 作者:行者123 更新时间:2023-11-30 10:48:00 25 4
gpt4 key购买 nike

我写了一个方法来获取 DB2 数据源实例,用于 jdbc 连接和查询执行

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 error: SQLCODE: -204, SQLSTATE: 42704, SQLERRMC: TESTUSER.EMPLOYEE

现在我已经通过下面的语句在数据源中设置了模式

dataSource.setCurrentSchema("DB2TEST");

但它似乎不是以这种方式设置模式。我想了解我所缺少的。

----更新----

It seems if I use DB2SimpleDataSource instead of DB2DataSOurce. setCurrentSchema works just fine. There seems to be a problem in driver version 8.1

BTW I already know I can set the schema by executing statement SET schema as below

stmnt.executeUpdate("SET SCHEMA DB2TEST");

这样设置schema好像不是很合适。此外,在从数据源获取的 Connection 对象上设置模式也不是一个选项,因为我需要将 DataSource 的实例传递给我的方法。

最佳答案

您必须设置 DB2 专用寄存器:

Properties prop = new Properties();
prop.put ("CURRENT SCHEMA", "DB2TEST");
dataSource.setSpecialRegisters(prop);

来源:https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.java.doc/src/tpc/imjcc_rjv00016.html

关于java - 在 JDBC 中的 DB2 DataSource 中设置当前模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35995545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com