代码之家  ›  专栏  ›  技术社区  ›  reakt

从C连接到IBM DB2 10.1#

  •  0
  • reakt  · 技术社区  · 7 年前

    我需要从连接到IBM DB2 10.1。Net应用程序。我从一个控制台应用程序开始,将连接作为概念验证。我正在使用IBM。数据DB2命名空间。

    我收到以下错误:

     InvalidOperationException was unhandled: SQL1159  Initialization error with DB2 .NET Data Provider, reason code 2, tokens C:\Users\myname\Desktop\dbConnect\dbConnectApp\dbConnectApp\bin\db2app.dll, , Process Owner: XXXXX\myname
    

    起初,我有处理器架构错误。我通过引用IBM的一个例子来解决这个问题。数据DB2 dll,然后在Visual Studio的Configuration Manager中将平台执行体系结构更改为x86。

    一些信息:

    Visual Studio 2012。NET 4.5、Windows Server 2008 R2上的IBM DB2 10.1

    示例代码:

      static void SelectRow(string myConnectionString)
        { 
            if (myConnectionString == "")
            {
                myConnectionString = "server=MyServerName:60001;Database=mydatabasename;UID=db2admin;PWD=Mypassword1!;";
            }
            DB2Connection myConn = new DB2Connection(myConnectionString);
            string mySelectQuery = "Select * from DB_SCH.USER";
            DB2Command myDB2Command = new DB2Command(mySelectQuery);
            myDB2Command.Connection = myConn;
            myConn.Open();
            myDB2Command.ExecuteNonQuery();
            myConn.Close();
        }
    

    如何修复此错误?从C#连接到Db2的其他方法有哪些?

    编辑:更改为64位版本的IBM后出现新错误。数据Db2并在Visual Studio项目中更改为64位处理器体系结构:

     SQL1159  Initialization error with DB2 .NET Data Provider, reason code 3, tokens C:\Users\myname\Desktop\dbConnect\dbConnectApp\dbConnectApp\bin\db2app64.dll, , Process Owner: xxxxx\myusername
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   mao    7 年前

    您正在Windows Server 2008 R2上使用Db2 V10.1的fixpack 0,全部为64位。

    Db2构建早于Visual-Studio-2012,因此在部署显式支持Visual-Studio-2012的Db2构建之前,您会遇到问题。

    您最好的选择是将Db2服务器升级到V10.1的最终修订包,即修订包6(当前日期),可从IBM Fix Central网站下载。我建议您下载 服务器 安装前步骤和安装后步骤请遵循Db2知识中心步骤。服务器补丁包可以在没有现有安装的情况下安装(可以运行90天),这样您就可以在提交到服务器之前在开发环境中测试它。

    在使用db2setup GUI安装期间,您需要明确选择安装“用于Visual Studio的IBM数据库外接程序”组件,该组件提供可与Visual Studio-2012配合使用的外部插件。

    从技术上讲,Db2 V10.1 for Visual-Studio-2012中的支持是在V10.1 fixpack 2中实现的,但是如果您必须麻烦地应用新的fixpack,那么您也可以安装V10.1树的最终fixpack,只是为了获得几年的bug修复。

    另一种选择是将Db2版本升级到V10.5或V11.1,但这将涉及新的许可证,而安装补丁包将重用现有许可证。