我正在尝试编写控制台应用程序以使用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);
答案 0 :(得分:1)
根据IBM i Access Client Solutions - readme,您的.Net数据提供者应为IBM.Data.DB2.iSeries
。
您可能还希望在connection string中为系统命名规则指定NAM=1
。这将允许使用连接作业的库列表来查找对象,而不是对模式名称进行硬编码。图书馆名称]。这使得在其他环境中运行(例如测试)变得更加容易,而无需更改任何源代码,而只需更改连接字符串以指定不同的库列表[DBQ
属性即可。