0
異なるクエリでのOracleConnectionを使用するには、どのように私はすべてのクエリのためにそれを使用するOracleConnectionオブジェクトでC#
を動作させる方法を理解できないのですか?または1つのクエリの1つの接続?
私のプログラムが実行します。
1)レシーブデータをOracleのDB(カーソル)(から〜100.000 - 別のテーブル
で選択した各レコード(ID)更新値の場合1.000.000記録)2)正しいかどう
:
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#コードを書くのかと主張したいと思います。 1つのDBから別のDBへの単純なUPDATEをSQLで直接行うことができます。 – Filburt
DBに保存する前に値を変更したり、プログラムから何かをしたいのですが 大抵私はC#を学びたいと思っています - オラクルのコミュニケーションと私のプログラムは役に立たないと思います... –