你就好了捆绑额外的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