您可以帮我在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...");
你有同样的问题吗? 谢谢Lukas
答案 0 :(得分:1)
您正在每个循环中创建一个不需要的新连接,您应该避免它用于网络消费
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();
}
}
}
P.S。不要忘记,请使用参数化查询以避免SQL注入。