C# 使用C更新oracle数据库中多行的最佳方法#

C# 使用C更新oracle数据库中多行的最佳方法#,c#,oracle,model-view-controller,C#,Oracle,Model View Controller,我有一个可变的ID列表。我想更新Oracle数据库中每个ID的“状态”列。我搜索了一下,发现了以下选项: OracleDataAdapter-没有数据表,只有ID 包含UPDATE语句的for循环(可能是数千次更新) 存储过程-希望不必这样做 任何帮助都将不胜感激。谢谢如果您已经知道ID,您可以构建in子句并执行Calar: 更新sometable 设置状态='Shipped' (10,17,19,20,89)中的sometableid的位置检查此线程 它讨论了如何使用参数数组,这可能非常

我有一个可变的ID列表。我想更新Oracle数据库中每个ID的“状态”列。我搜索了一下,发现了以下选项:

  • OracleDataAdapter-没有数据表,只有ID
  • 包含UPDATE语句的for循环(可能是数千次更新)
  • 存储过程-希望不必这样做

任何帮助都将不胜感激。谢谢

如果您已经知道ID,您可以构建in子句并执行Calar:

更新sometable 设置状态='Shipped' (10,17,19,20,89)中的sometableid的位置检查此线程


它讨论了如何使用参数数组,这可能非常适合您正在尝试的操作

谢谢你的回复。我想按照下面的方式来做,我只是关心在这么多的迭代中保持连接的开放性

using (OracleConnection oracleConnection = new OracleConnection(connection))
                {
                    oracleConnection.Open();

                    OracleCommand Command = new OracleCommand();
                    Command.Connection = oracleConnection;
                    Command.CommandType = CommandType.Text;
                    status = "A";
                    foreach (var memberID in MemberIDs)
                    {
                        sqlStatement = " UPDATE " + " ourdbtable" + " Set userstatus = '" + status + "' WHERE " + "memberid= " + memberID;
                        // command
                        Command.CommandText = sqlStatement;
                        Command.ExecuteNonQuery();
                    }
                }

无需如此反对存储过程,这些存储过程并没有那么糟糕:)看看这里的一些想法:我看不出有什么问题。。。你有没有试过这些选择?什么不起作用?请展示一些代码…作为旁注,一个包含许多命令的for循环发送到数据库,但它们都在同一事务中,理论上也不算太糟糕,除了这样一个事实,即您使用少量数据传输多次往返到服务器,而不是使用更多数据传输一次。。。一般来说,我喜欢第二个,但这是有争议的…如果它是一个变量列表,并且可能会变得很大,那么使用事务循环肯定是可行的。感谢您的回复。我采用了for循环方法。