如何在多个库中的表上对iSeries运行ODBC查询?

时间:2017-03-22 16:34:34

标签: c# odbc ibm-midrange

我需要通过iSeries数据库从C#程序运行SQL查询,其中查询包含与主查询中的表不同的库中的表的子查询。

以前我们通过使用库名称限定子查询中的表来执行此操作,但是程序必须在多个环境中运行,因此查询字符串中不允许使用硬编码的库名。

为了尝试这个,我将DBQ参数放在连接字符串中,其中包含两个库。 [编辑]连接字符串完整(在.dsn文件中的单独行上):

DRIVER=iSeries Access ODBC Driver
QUERYTIMEOUT=0
PKG=[LIBRARY]/DEFAULT(IBM),2,0,1,0,512
LANGUAGEID=ENU
DBQ=,MAINLIB,OTHERLIB
SYSTEM=[IP ADDRESS]
UID={0}
PWD={1}

将UID和PWD替换为特定于环境的配置文件中的值。

根据this page,使用逗号开始DBQ参数中的库列表将不指定默认库 - 否则列表中的第一个库将用于查询中的非限定表名

当我尝试使用此配置运行查询时,我的程序返回一个ODBCException,其中包含“[iSeries Access ODBC Driver] [DB2 UDB] SQL0204 - [用户ID(!)]类型中的[表名] *未找到文件“。

我也尝试过“DBQ = * USRLIBL”,它应该用户的库列表替换参数。

有没有人知道为什么,在缺少默认库的情况下,连接会将用户配置文件视为默认库,并且有人可以建议我如何使其工作吗?

0 个答案:

没有答案