插入/更新行会导致从调试模式返回

本文关键字:调试 模式 返回 更新 插入 | 更新日期: 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注入。