私は同じコマンドを実行するのに同じSqlConnection
とSqlCommand
オブジェクトを使用しようとしていました。異なるコマンドで複数回sqlコマンドを使用する
最初のものは重複をチェックし、2番目のものはユーザが入力したデータが重複していない場合にデータを挿入します。私は1つの接続を使用して、データベースへの旅行を保存しようとしていた
using (SqlConnection conn = new SqlConnection(ConnStr))
{
string Command = "SELECT CountryName FROM [Countries] WHERE CountryName = @Name";
using (SqlCommand comm = new SqlCommand(Command, conn))
{
comm.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 20);
comm.Parameters["@Name"].Value = Name;
comm.Parameters.Add("@IsVisible", System.Data.SqlDbType.Bit);
comm.Parameters["@IsVisible"].Value = IsVisible;
conn.Open();
if (comm.ExecuteScalar() == null)
{
Command = "INSERT INTO [Countries] (CountryName, IsVisible) VALUES (@Name, @IsVisible);";
comm.ExecuteNonQuery();
}
}
:
は、ここに私のコードのサンプルです。
問題がある:
最初のコマンドが実行されますが大丈夫 データベースに挿入 2番目のコマンドは動作しません(それはデシベルに すべてのレコードを追加しません)と私が に影響を受けた行を表示しようとしたとき は私に-1を与えました!
質問です:
が、これは ユニークな国を拘束する ために重複レコードをチェックするための理想的な方法ですか? 2番目の コマンドが実行されていないのはなぜですか?
[接続プール](http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx)は、同じDB接続を使用してデータベースへのアクセスを保存する必要はありません。 (あなたが明示的にそれを無効にしている場合を除いて)ほぼ確実に使用されています。同じ接続を使用して2回実行すると、DBへの呼び出しが2回行われます。 – steinar
アドバイスをありがとうございます。あなたの意見では、自分の状況でDbの負荷を軽減するための旅を救う方法があると思いますか? – lKashef
ストアドプロシージャを使用する場合は、もっとも間違いありません。それはオプションですか? – steinar