0
我無法理解如何使用OracleConnection對象如何使用不同的查詢使用OracleConnection C#
將它用於所有查詢?或一個查詢的連接?
我的程序做:
1)收到的數據從Oracle DB(光標)(〜100.000 - 1.000.000記錄)
2)對於每個選擇的記錄(ID)更新值在另一個表
什麼是正確的:
1)對於每個查詢
using(OracleConnection connection = new OracleConnection(connectionString))
{
using(OracleCommand command = new OracleCommand(recieveSql, connection))
{
connection.Open();
...
command.ExecuteNonQuery();
...
using(OracleDataReader reader = command.ExecuteReader())
{
while(reader.Read())
{
int id = reader.GetInt32(0);
string value = reader.GetInt32(1);
UpdateRecord(id, value);
}
}
}
}
private void UpdateRecord(int id, string value)
{
using(OracleConnection connection = new OracleConnection(connectionString))
{
using(OracleCommand command = new OracleCommand(updateSql, connection))
{
connection.Open();
...
command.Parameters.AddWithValue("@id", id);
command.Parameters.AddWithValue("@value", value);
command.ExecuteNonQuery();
...
}
}
}
創建的OracleConnection
2)使用1周的OracleConnection所有查詢
using(OracleConnection connection = new OracleConnection(connectionString))
{
using(OracleCommand command = new OracleCommand(recieveSql, connection))
{
connection.Open();
...
command.ExecuteNonQuery();
...
using(OracleDataReader reader = command.ExecuteReader())
{
while(reader.Read())
{
int id = reader.GetInt32(0);
string value = reader.GetInt32(1);
UpdateRecord(connection, id, value);
}
}
}
}
private void UpdateRecord(OracleConnection connection, int id, string value)
{
using(OracleCommand command = new OracleCommand(updateSql, connection))
{
...
command.Parameters.AddWithValue("@id", id);
command.Parameters.AddWithValue("@value", value);
command.ExecuteNonQuery();
...
}
}
我會說有一個明顯的開銷打開100.000+連接所有這些更新。但是如果你爲了這個問題而沒有簡化你的任務/代碼,我會爭論爲什麼編寫任何C#代碼?從一個DB到另一個DB的簡單更新可以直接在SQL中完成。 – Filburt
因爲我想有一個機會來改變價值或從程序中做點什麼,然後保存到DB 大多數情況下,我只是想學習C# - Oracle通信和我的程序不做有用的事情... –