小编Bre*_*ent的帖子

C#ADO.NET IBM DB2命名参数具有相同的名称throws没有足够的参数指定Exception

我有一个相当不可知的ADO.NET应用程序,它连接到许多数据库,并能够提取运行所需的信息.我遇到了DB2以及它如何处理命名参数,特别是当我在同一个查询中重用一个命名参数时.我知道有几种方法可以通过简单地添加更多参数来解决这个问题,但理论上它应该像我连接到的其他数据库一样工作,因为参数名称是相同的.

我正在做的事情有点复杂,涉及子查询等,但为了演示,请采取以下查询:

从test.table中选择值,其中cola = @ key1和colb = @ key1;

命名参数@ key1使用两次.

我的代码如下:

       try
        {
            DbProviderFactory dbfFactory = DbProviderFactories.GetFactory("IBM.Data.DB2.iSeries");
            using (DbConnection dbConnection = dbfFactory.CreateConnection())
            {
                dbConnection.ConnectionString = "DataSource=xxx.xxx.xxx.xxx;UserID=xxxxxxxx;password=xxxxxxxxx";

                using (DbCommand dbCommand = dbConnection.CreateCommand())
                {
                    IDbDataParameter iddpParameter1 = dbCommand.CreateParameter();
                    iddpParameter1.ParameterName = "@key1";
                    iddpParameter1.DbType = DbType.String;
                    iddpParameter1.Value = "1";

                    dbCommand.Parameters.Add(iddpParameter1);
                    dbCommand.CommandType = CommandType.Text;
                    dbCommand.CommandText = "select value from test.table where cola=@key1 and colb=@key1";
                    dbConnection.Open();

                    using (IDataReader idrReader = dbCommand.ExecuteReader())
                    {
                        while (idrReader.Read())
                        {
                                   ...
                        }
                    }
                }

            } // end dbConnection …
Run Code Online (Sandbox Code Playgroud)

c# ado.net db2-400 ibm-midrange

10
推荐指数
1
解决办法
1376
查看次数

标签 统计

ado.net ×1

c# ×1

db2-400 ×1

ibm-midrange ×1