C# 使用C更新oracle数据库中多行的最佳方法#
我有一个可变的ID列表。我想更新Oracle数据库中每个ID的“状态”列。我搜索了一下,发现了以下选项: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的位置检查此线程 它讨论了如何使用参数数组,这可能非常
- 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循环方法。