c# - 连接必须有效且打开(再次)

标签 c# mysql odbc rows

我遇到错误“连接必须有效并再次打开,当我更改我的 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/

相关文章:

mysql - 获取给定路径中的消息

MySQL仅在给出完整号码时才匹配区号

sql-server - Linux 中的 MSSQL ODBC 连接

c# - 尝试插入两个字母的字符时,指定的转换无效

c# - 使用 recordType 的对象更新 Linq2Sql 中的记录

php - MYSQL数据库如何修改时区?

javascript - 每次选中和取消选中复选框时如何在不单击表单提交按钮的情况下在数据库中插入值

javascript - 从 POST 收到的响应已损坏

c# - 无法序列化 Azure ServiceBus 消息 - 从 'ExpiresAtUtc' 获取值时出错

qt - 部署 Qt ODBC 应用程序