我遇到错误“连接必须有效并再次打开,当我更改我的 sql 查询代码时。任何人都可以帮忙吗??(编辑)在 form1 中我已经连接到数据库,在 form2 中我试图添加查询。
//IN Class1.cs
public void test(string query, string name)
{
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(query, connection);
cmd.CommandText = @query;
cmd.Parameters.AddWithValue("Name", name);
MySql.Data.MySqlClient.MySqlDataReader Reader = cmd.ExecuteReader();
while (Reader.Read())
{
Console.WriteLine(Reader[0]);
}
cmd.ExecuteNonQuery();
}
//IN Form2.cs
private void button2_Click(object sender, EventArgs e)
{
name = textBox1.Text;
var obj = new Class1();
obj.test(@"SELECT * FROM players WHERE name = ?Name;", name);
}
最佳答案
看起来连接正在处理(或者可能根本没有打开!)
理想情况下,我会将其更改为使用工作单元方法,并将您的实例包装在 using block 中以确保它们被正确处理:
using (var connection = new MySqlConnection("connection-string"))
{
using (var command = new MySqlCommand(query, connection))
{
connection.Open();
command.Parameters.AddWithValue("?name", name);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader[0]);
}
}
}
}
此外,在您已经使用 ExecuteReader()
之后调用 cmd.ExecuteNonQuery();
的目的是什么?
关于c# - 连接必须有效且打开(再次),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235740/