更新:下面的代码示例有效。我更改了连接字符串。这就是问题所在。有关替代(非 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 一起使用?