3

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

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 时的“初始目录”。

经过一堆实验和谷歌搜索,我似乎无法弄清楚。有任何想法吗?

4

1 回答 1

6

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

出于某种原因,我在通过http://www.connectionstrings.com/ibm-db2工作后没有立即连接那个点(尝试了各种变体,如 Schema、Default Schema 等)。希望这对将来的某人有所帮助...

于 2012-05-23T21:26:17.500 回答