在连接字符串中为DB2查询指定模式/实例

时间:2012-05-23 20:46:23

标签: c# db2

我正在尝试将默认架构/实例指定为连接字符串(或特定命令)的一部分,因此它不需要成为查询的一部分。

OdbcConnection conn = new OdbcConnection("Driver={IBM DB2 ODBC DRIVER}; Database=myDB; Hostname=myHostName; Port=myPort; Protocol=TCPIP; Uid=myID; Pwd=myPW;");
OdbcCommand comm = new OdbcCommand("select count(*) from customers", conn);
conn.Open();
var value = comm.ExecuteScalar();
conn.Close();

不幸的是,这失败并出现错误:

  

错误[42S02] [IBM] [CLI驱动程序] [DB2] SQL0204N myID .customers是未定义的名称。 SQLSTATE = 42704。

请注意,它使用的是模式/实例所在的 myID 。如果我指定架构/实例明确:

OdbcCommand comm = new OdbcCommand("select count(*) from mySCHEMA.customers", conn);

它按预期工作。我想将mySCHEMA指定为连接字符串的一部分,类似于使用MS SQL Server时的“初始目录”。

经过一系列的实验和谷歌搜索后,我似乎无法弄明白。有什么想法吗?

1 个答案:

答案 0 :(得分:6)

哇,这个很明显。我只需要在连接字符串中使用CurrentSchema = mySCHEMA。

由于某种原因,我在完成http://www.connectionstrings.com/ibm-db2之后没有立即连接那个点(尝试了各种各样的变体,如Schema,Default Schema等)。希望这有助于将来......