2017-04-13 13 views
1

1つのプリペアドステートメントで複数のSQLクエリを実行できるかどうかは疑問でした。 これは私が実行する最初のクエリです:複数のSQLクエリをC#プリペインドステートメントで実行

MySqlCommand cmd = new MySqlCommand(
        "INSERT INTO Table VALUES (@Date,@Manager,@Joiner,@Number,@Type,@Join,@Status)", 
        conn); 
        cmd.Prepare(); 
        cmd.Parameters.AddWithValue("@Date", Date); 
        cmd.Parameters.AddWithValue("@Manager",Manager); 
        cmd.Parameters.AddWithValue("@Joiner", Joiner); 
        cmd.Parameters.AddWithValue("@Number", Number); 
        cmd.Parameters.AddWithValue("@Type", Type); 
        cmd.Parameters.AddWithValue("@Join", Join); 
        cmd.Parameters.AddWithValue("@Status", Status); 
        cmd.ExecuteReader(); 

、右、私は DELETE FROM Table where Date='@Date'クエリを実行する必要があります後。 これを行う最も効率的な方法は何ですか?

答えて

1

MySqlはバッチコマンドをサポートしています。これは、私も

"INSERT INTO Table VALUES (@Date,@Manager,@Joiner,@Number,@Type,@Join,@Status); 
DELETE FROM Table where [email protected]" 

お知らせ(あなたが何かを読む必要がないときのExecuteReaderを使用していない)最初のコマンドは、テキストの後にセミコロンとは、ExecuteNonQueryを経由して提出した単一の文字列の2番目のコマンドを追加することができることを意味し@Dateパラメーターの回りに単一引用符を削除しました。それらを離れると、パラメータプレースホルダがリテラル文字列に変換されます。これにより、削除する行はほとんど見つかりません。 2番目の考えでは、最初のコマンドに挿入された同じレコードが削除されるため、この2番目のコマンドには困惑しています。

+1

2番目のコマンドは単なる例で、実行しているクエリが異なります。この答えをありがとう。 – user3586606

関連する問題