数据库连接- c#到AS400 / JD Edwards -运行程序-数据源名称未找到,未指定默认驱动程序

本文关键字:默认 驱动程序 未指定 程序 AS400 JD Edwards 数据库连接 运行 数据源 | 更新日期: 2023-09-27 18:02:01

更新:下面的代码示例可以工作。我更改了连接字符串。这就是问题所在。有关替代(非ado)解决方案,请参阅评论中Mike Wills的链接。

我有一个c#类,(如果我曾经得到它的工作)运行在AS/400上的RPG代码编写的程序- JD爱德华兹。我对AS/400和/或JD Edwards几乎一无所知。

我有其他类在我的(内部网)网络应用程序连接到JD爱德华兹,运行SQL查询和设置/获取数据。所有这些都使用IBM.Data.DB2。

为此,我使用前面提到的dll编写了一个类似的类,但它不起作用。我甚至在网上看到你不能用这个dll运行程序。我发现这有点可疑,但根据我JD Edwards同事的建议,我放弃了这个类,并使用adobedll重新编写了它。此程序运行不需要返回任何数据。我只是想让程序运行。

下面是该类的简化版本:

    private void runJDEProgram() {
        ADODB.Connection cn = new ADODB.Connection();
        cn.ConnectionString = "Provider=ABABAB;Data Source=111.111.111";

        ADODB.Command cmdDetail = new ADODB.Command();
        cn.Open(); //has to be open before setting an active connection.
        cmdDetail.ActiveConnection=cn;

        cmdDetail.CommandType = ADODB.CommandTypeEnum.adCmdText;
        cmdDetail.CommandText = "{{CALL BLAH.BLAH(?,?)}}";

        cmdDetail.Prepared = true;
        cmdDetail.Parameters.Append(cmdDetail.CreateParameter("P1", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 10, "BLAH123"));
        cmdDetail.Parameters.Append(cmdDetail.CreateParameter("P2", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 10, "BLAH456"));
        object dummy = Type.Missing; //otherwise, we couldn't get past this.
        cmdDetail.Execute(out dummy, ref dummy, 0);
        cn.Close();
    }

下面是我在运行时得到的错误:

{"[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"}

我哪里搞砸了?谢谢!

编辑:连接字符串在查询AS/400获取/设置数据时有效。它是否需要修改这样的操作,或与ADO一起使用?

数据库连接- c#到AS400 / JD Edwards -运行程序-数据源名称未找到,未指定默认驱动程序

由于某种原因,连接字符串必须不同。我不使用相同的连接字符串的其他类,只是运行查询。上面的连接字符串工作得很好(当然,使用了适当的值)。

它将提示输入密码,但这里的JDE人员希望这样。

相关文章: