使用 C# 在 oracle 数据库中更新多行的最佳方法
Posted
技术标签:
【中文标题】使用 C# 在 oracle 数据库中更新多行的最佳方法【英文标题】:Best way to UPDATE multiple rows in oracle database using C# 【发布时间】:2011-09-14 20:31:36 【问题描述】:我有一个可变的 ID 列表。我想更新 Oracle 数据库中每个 ID 的“状态”列。我已经搜索并遇到了以下选项:
OracleDataAdapter - 没有数据表,只有 ID 包含 UPDATE 语句的 for 循环(可能是数千个 UPDATE) 存储过程 - 希望不必这样做任何帮助将不胜感激。谢谢
【问题讨论】:
没必要这么反对存储过程,这些还不错:) 在这里寻找一些想法:***.com/questions/2528181/… 我没有看到任何问题...您尝试过任何选项吗?什么没有奏效 ?请显示一些代码... 顺便说一句,一个带有许多命令的 for 循环发送到数据库,但所有命令都在同一个事务中,理论上也不算太糟糕,除了你做了很多往返到具有少量数据传输的服务器,而不是具有更多数据的服务器...我一般喜欢第二个,但这是有争议的... 如果它是一个变量列表并且可以变得很大,那么带有事务的循环肯定是要走的路。 感谢您的回复。我采用了 for 循环方法。 【参考方案1】:如果您已经知道 Id,则可以构建一个 in 子句并执行 ExecuteScalar:
更新某些表 设置状态 = '已发货' where sometableid in (10,17,19,20,89)
【讨论】:
【参考方案2】:看看这个帖子。
https://forums.oracle.com/forums/thread.jspa?threadID=638673
它谈到了使用参数数组,这可能非常适合您尝试做的事情。
【讨论】:
【参考方案3】:感谢您的回复。我想像下面那样做,我只是关心保持连接打开这么多迭代。
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();
【讨论】:
以上是关于使用 C# 在 oracle 数据库中更新多行的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章