我有一条更新语句,该语句给出错误“无法将参数值从String []转换为String。”

SqlCommand comm1 = new SqlCommand("UPDATE count set ETR=@ETR WHERE Id IN ( " + itemIDs + ")", connection);
                comm1.Parameters.Add("@ETR", System.Data.SqlDbType.VarChar, 50);
                comm1.Parameters["@ETR"].Value = delivery;


其中itemIDs是一个array.now,我想将值ETR设置为等于从数组“传递”中检索的值。我的意思是说,对于每个itemID,传递数组中都有一个值,此命令应该为每个传递ID设置ETR的值itemID到交货数组中的对应值

最佳答案

您应该对交货中的每个项目执行1条更新命令,最好将其包装在交易中。

SqlTransaction tx = connection.BeginTransaction();
SqlCommand comm1 = new SqlCommand("UPDATE count set ETR=@ETR WHERE Id=@ID", connection);
comm1.Connection = connection;
comm1.Transaction = transaction;
comm1.Parameters.Add("@ID", System.Data.SqlDbType.Int);
comm1.Parameters.Add("@ETR", System.Data.SqlDbType.VarChar, 50);
for(int i = 0; i < itemIDs.Count; i++) {



    comm1.Parameters["@ID"].Value = itemIDs[i];

    comm1.Parameters["@ETR"].Value = delivery[i];
    comm1.ExecuteNonQuery();
 }
 tx.Commit();

关于c# - sql中的更新问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1834539/

10-12 19:31