查看this example进行批量插入,我假设使用相同的逻辑可用于更新。我尝试了以下内容,看看它是否可行,但它没有:
string sql = "update TEST set NAME=:newName where NAME=:name";
connection.Open();
OracleCommand command = connection.CreateCommand();
command.CommandText = sql;
command.CommandType = System.Data.CommandType.Text;
command.BindByName = true;
command.ArrayBindCount = 5;
string[] originalName = { "Test1", "Test2", "Test3", "Test4", "Test5" };
string[] newName = { "New Test1", "New Test2", "New Test3", "New Test4", "New Test5" };
command.Parameters.Add(":newName", OracleDbType.Varchar2, originalName, System.Data.ParameterDirection.Input);
command.Parameters.Add(":name", OracleDbType.Varchar2, newName, System.Data.ParameterDirection.Input);
command.ExecuteNonQuery();
connection.Close();
这不适用于更新吗?有没有办法轻松地进行批量更新,类似于如何在我链接的示例中执行批量插入?
答案 0 :(得分:1)
事实证明我的参数名称已被翻转。让我永远找到它。
答案 1 :(得分:0)
你不能将数组作为参数传递。
你可以做的是遍历你的数组并为数组的每个位置调用更新(这不是真正的“批量”插入),或者你可以使用类似的东西:
WHERE NAME in ("Test1", "Test2", "Test3", "Test4", "Test5")
等等