0

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

我有一个 ac# 类(如果我让它工作的话)在 AS/400 - JD Edwards 上运行一个用 RPG 代码编写的程序。我对 AS/400 和/或 JD Edwards 几乎一无所知。

我的(内部网)Web 应用程序中有其他类连接到 JD Edwards,运行 SQL 查询和设置/获取数据。所有这些都使用 IBM.Data.DB2.iSeries dll 并且运行良好。

为此,我使用上述 dll 编写了一个类似的类,但它不起作用。我什至在网上某处读到您无法使用此 dll 运行程序。我发现这有点可疑,但根据我的 JD Edwards 同事的建议,我取消了该课程并使用 adodb dll 重新编写了它。此程序运行无需返回数据。我只是想让程序运行。

这是该类的虚拟化版本:

    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 一起使用?

4

1 回答 1

0

出于某种原因,连接字符串必须为此不同。我不对其他只运行查询的类使用相同的连接字符串。上面的连接字符串工作正常(当然,使用适当的值)。

它会提示输入密码,但这里的 JDE 人员想要这样。

于 2013-03-05T17:04:16.230 回答