あなただけの罰金)のExecuteReader(とあなたのSELECTと一緒に余分なINSERTをバンドルしています。これは大丈夫です。
私はいくつかの潜在的な貧しい慣行に潜在的に大丈夫ではない2つの事柄...コード自体に何を見ていますが、何があったが簡素化され、単純化されたコードヒント:
最初ではない大丈夫さあなたのコードはのように見えるかもしれませんあなたのクエリに値を置き換える文字列連結を使用している可能性があります。このような何か:
MySqlCommand cmd = new MySqlCommand
(@"INSERT INTO Table(field) VALUES('" + somevariable + "');" +
"SELECT * FROM table",cn);
それはあなたのアプリケーションでぽっかりセキュリティホールを開くと、巨大問題です。代わりに、クエリパラメータを使用する必要があるので、コードはより次のようになります。
MySqlCommand cmd = new MySqlCommand
(@"INSERT INTO Table(field) VALUES(@somevalue);" +
"SELECT * FROM table",cn);
cmd.Parameters.Add("@somevalue", SqlDbType.VarChar, 50).Value = somevariable;
他の潜在的な問題は、あなたのコマンドと、もっと重要なのは、あなたの接続は、のtry/finallyブロックでラップする必要があります(または)好み使ってブロックするために、次のように:
using (var cn = new MySqlConnection("..."))
using (var cmd = new MySqlCommand("@INSERT INTO Table(field).... ", cn))
{
cmd.Parameters.Add(...);
cn.Open();
using (var rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
//...
}
}
}
実際のコードでは、実際にはすべての行がテーブルからすべて選択されないことを願っています。それは貧弱なスケールになります。 –
テーブル全体から「SELECT」を実行しようとすると、パフォーマンスが大幅に低下します。私はちょうど例として –
の可能な複製[SQLCommand.ExecuteReader()は読み取り専用ステートメントに制限されていません](http://stackoverflow.com/questions/3348012/sqlcommand-executereader-does-not-restrict-to- read-only-statements) – nawfal