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

时间:2020-03-05 18:59:08  来源:igfitidea点击:

我正在使用IBM iSeries Access Windows版软件包连接到AS / 400存储过程层。这为.NET DLL提供了类似于System.Data命名空间中的类的类。因此,我们使用他们对连接类的实现,并为其提供连接字符串。

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

解决方案

回答

我们是否正在使用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" />

回答

使用Client Access Express驱动程序的一些Delphi源代码的片段。可能不完全是我们想要的内容,但是它可能会帮助那些偶然发现本文的人。 " 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;

"默认集合"是用于设置程序开始执行的库的参数。

并且,如果我们要从Windows通过ODBC连接(例如在控制面板中设置驱动程序):

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标记中,并定义用于连接的API,在这种情况下,该API为OleDb:

providerName="System.Data.OleDb"