你就好了捆綁額外的INSERT與您的選擇具有的ExecuteReader沿()。這沒關係。
我看到兩件事情都可能不好啦...沒有代碼本身,而是你什麼表現簡化,並簡化代碼暗示一些潛在的不良行爲:
第一個不行的你的代碼看起來像可能正在使用字符串連接來將值替換到您的查詢中。事情是這樣的:
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())
{
//...
}
}
}
希望您的真實代碼在每次插入時都不會真正從表中選擇所有行。這將擴大......糟糕。 –
如果我嘗試從整個表格中「選擇」,它會真的殺死它的表現。我只是將其設置爲一個示例 –
[SQLCommand.ExecuteReader()可能的重複不限於只讀語句](http://stackoverflow.com/questions/3348012/sqlcommand-executereader-does-not-restrict-to-只讀語句) – nawfal