连接到DB2 for i(AS400)

时间:2019-01-20 07:37:21

标签: c# .net db2-400

我正在尝试编写控制台应用程序以使用C#连接到我的DB2。我只有一些小代码,只是要先测试连接,但是却出现错误,但无法找到此错误的原因。而且我使用IBM.Data.DB2。请给点灯。

错误消息:

Unhandled Exception: System.TypeInitializationException: The type initializer for 'IBM.Data.DB2.DB2Trace' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Security.Permissions, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
   at IBM.Data.DB2.DB2ConnPool.GetDB2ConnPool()
   at IBM.Data.DB2.DB2ConnPool..ctor()
   at IBM.Data.DB2.DB2Trace..cctor()
   --- End of inner exception stack trace ---
   at IBM.Data.DB2.DB2Connection..ctor(String connectionString)
   at something.Program.Main(String[] args) in C:\c#\something\something\Program.cs:line 16
Press any key to continue . . .

    DB2Connection Con = new DB2Connection("Server=myserver; Database=dbname; UID=Db2admin; PWD=password;");

    DB2Command cmd = new DB2Command();

    cmd.CommandText = "Select * from Reports";

    cmd.Connection = Con;

    cmd.CommandTimeout = 60;

    Con.Open();

    DB2DataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

1 个答案:

答案 0 :(得分:1)

根据IBM i Access Client Solutions - readme,您的.Net数据提供者应为IBM.Data.DB2.iSeries

您可能还希望在connection string中为系统命名规则指定NAM=1。这将允许使用连接作业的库列表来查找对象,而不是对模式名称进行硬编码。图书馆名称]。这使得在其他环境中运行(例如测试)变得更加容易,而无需更改任何源代码,而只需更改连接字符串以指定不同的库列表[DBQ属性即可。