我正在尝试连接到位于AS400(ISeries)上的DB2数据库。我可以连接到成功使用连接字符串但是一旦我尝试访问表,我就会收到此错误:CPF9812:库中的文件SELECT *未找到LIBL。
此时我只是想看看我是否可以访问GLPCT表中的数据。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;
namespace Testing_Connection_to_GLDBFA
{
class Program
{
static void Main(string[] args)
{
string connectionstring = "Provider=IBMDARLA.DataSource.1;Data Source=INFINIUM;Persist Security Info=True;Password=MyPassword;User ID=UserID;Initial Catalog=S06947A4;Default Collection=GLDBFA";
string querySTring = "";
DataTable schema;
int i = 0;
using( OleDbConnection cn = new OleDbConnection(connectionstring))
{
querySTring = "SELECT * FROM GLPCT";
OleDbCommand command = new OleDbCommand(querySTring, cn);
cn.Open();
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());
i++;
if (i == 20)
break;
}
cn.Close();
}
}
}
}
非常感谢任何帮助或指导。 提前谢谢。
答案 0 :(得分:1)
我希望看到以下错误:
CPF9812:找不到库 USERID 中的文件 GLPCT 。
默认情况下,在使用SQL命名时,系统将使用用户ID隐式限定非限定表名。有关详细信息,请参阅here
您似乎使用的是OLE DB provider而不是.NET provider
如果要使用库列表,则需要使用系统命名并确保在连接上配置库列表。
对于OLEDB提供程序,您要设置库列表和命名约定
<connection>.Open('Provider=IBMDA400;Data Source=SystemA;Library List=lib1,lib2, *USRLIBL;Naming Convention=1', 'Userid', 'Password');
对于.NET提供程序,它是 LibraryList 和命名属性。
最后,如果您想继续使用OLE DB提供程序,可以考虑使用IBMDASQL而不是IBMDARLA。