如何将IBM iSeries 2连接字符串中的SQL默认库指示给AS/400?

问题描述:

我使用IBM iSeries Access for Windows软件包连接到AS/400存储过程层。这提供了一个类似于System.Data命名空间类的.NET DLL。因此,我们使用它们的连接类的实现并为它提供一个连接字符串。如何将IBM iSeries 2连接字符串中的SQL默认库指示给AS/400?

有谁知道我可以如何修改连接字符串来指示它应该使用的默认库?

您是否使用OLE DB的目录库列表参数?这是我的连接字符串通常看起来像:

<add name="AS400ConnectionString" connectionString="Data Source=DEVL820;Initial Catalog=Q1A_DATABASE_SRVR;Persist Security Info=False;User ID=BLAH;Password=BLAHBLAH;Provider=IBMDASQL.DataSource.1;**Catalog Library List=&quot;HTSUTST, HTEUSRJ, HTEDTA&quot;**" providerName="System.Data.OleDb" /> 

从一些Delphi源代码片段使用客户端访问Express驱动程序。可能不是你正在寻找的东西,但它可能会帮助别人偶然发现这篇文章。 DBQ部分是默认库,而System部分是AS400/DB2主机名。

ConnectionString := 
    'Driver={Client Access ODBC Driver (32-bit)};' + 
    'System=' + System + ';' + 
    'DBQ=' + Lib + ';' + 
    'TRANSLATE=1;' + 
    'CMT=0;' + 
    //'DESC=Client Access Express ODBC data source;' + 
    'QAQQINILIB=;' + 
    'PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;' +  
    'SORTTABLE=;' + 
    'LANGUAGEID=ENU;' + 
    'XLATEDLL=;' + 
    'DFTPKGLIB=QGPL;'; 

如果通过.NET连接

Provider=IBMDA400;Data Source=as400.com;User Id=user;Password=password;Default Collection=yourLibrary; 

默认集合是设置在您的计划应该开始执行库中的参数。

如果你是通过ODBC从Windows连接(如设置在控制面板的驱动器):

DRIVER=Client Access ODBC Driver(32-bit);SYSTEM=as400.com;EXTCOLINFO=1;UID=user;PWD=password;LibraryList=yourLibrary 

在这种情况下LibraryList是设置参数,请记住这用于ODBC连接。

有两个来自IBM的驱动程序连接到AS400,旧的使用上面的连接字符串,如果您有来自IBM的最新版本的客户端软件称为“System i Access for Windows”,那么您应该使用此连接字符串:

DRIVER=iSeries Access ODBC Driver;SYSTEM=as400.com;EXTCOLINFO=1;UID=user;PWD=password;LibraryList=yourLibrary 

最后几乎是一样的,只是DRIVER参数值的变化。

如果您在.NET应用程序使用此不要忘记将的providerName添加参数的XML标记,并定义用于连接这将是在这种情况下的OleDb的API:

providerName="System.Data.OleDb"