插入/更新行会导致从调试模式返回
本文关键字:调试 模式 返回 更新 插入 | 更新日期: 2024-11-06 21:34:43
你能帮我在C#中将行插入到Oracle数据库中吗?
我有foreach,在其中我只是进行sql查询。然后,当我尝试插入数据库(支持debbuging)时,第一行在几毫秒内插入,但第二次插入/更新大约需要5分钟。所有的魔力都在cmd.ExecuteNonQuery();插入/更新第二行后,debbuger 将焦点返回到应用程序,然后在 cca 5 分钟后返回 debbuger。但它是简单的更新,所以不需要那么多时间。
using (var connection = new OracleConnection(_connectionTNS))
{
connection.Open();
var transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
int rowsInserted = 0;
foreach (var item in _tableNameAndColumnsList)
{
if (item.Replace)
{
using (OracleCommand cmd = new OracleCommand())
{
cmd.Connection = connection;
cmd.Transaction = transaction;
cmd.CommandText = "UPDATE TABLE TEST WHERE id_test = "+id_test+" ";
rowsInserted += cmd.ExecuteNonQuery();
}
}
}
transaction.Commit();
MessageBox.Show("Changed " + rowsInserted + " database rows...");
你有同样的问题吗?谢谢卢卡斯
您正在每个循环中创建一个不需要的新连接,您应该避免使用它进行网络消耗
using (OracleCommand cmd = new OracleCommand())
{
cmd.Connection = connection;
cmd.Transaction = transaction;
foreach (var item in _tableNameAndColumnsList)
{
if (item.Replace)
{
cmd.CommandText = "UPDATE TABLE TEST WHERE id_test = "+id_test+" "; /*Assuming this is only test command*/
rowsInserted += cmd.ExecuteNonQuery();
}
}
}
附言不要忘记,请使用参数化查询以避免SQL注入。