c# - MySQL C#错误; "connection must be valid and open"

标签 c# mysql sql

你好,我得到了我正在处理的这个应用程序,但我无法填充下拉框。我想在下拉框中使用我的数据库中的 SQL 数据,但 SQL 说“连接必须有效且打开”,但我得到了另一个功能,包括使用相同的代码将文本保存到我的 SQL 数据库并且工作正常,所以我不我真的不知道哪里出了问题。

这是我的代码。

private void Form1_Load(object sender, EventArgs e)
    {
        try {
            //This is my connection string i have assigned the database file address path  
            string MyConnection2 = "datasource=localhost;username=root;database=game4rent";
            //This is my insert query in which i am taking input from the user through windows forms  
            string Query = "select Klantnummer,voornaam from game4rent.klanten";
            //This is  MySqlConnection here i have created the object and pass my connection string.  
            MySqlConnection conn = new MySqlConnection(MyConnection2);
            //This is command class which will handle the query and connection object.  
            MySqlCommand sc = new MySqlCommand(Query, conn);
            MySqlDataReader MyReader2;
            MyReader2 = sc.ExecuteReader();
            conn.Open();

            DataTable dt = new DataTable();
            dt.Columns.Add("Klantnummer", typeof(string));
            dt.Columns.Add("voornaam", typeof(string));
            dt.Load(MyReader2);

            cbKlantenNummers.ValueMember = "Klantnummer";
            cbKlantenNummers.DisplayMember = "Klantnummer,voornaam";
            cbKlantenNummers.DataSource = dt;

            conn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
   }

这是其他有效的代码。

 private void cmdOpslaanKlanten_Click(object sender, EventArgs e)
    {
        try
        {
            //This is my connection string i have assigned the database file address path  
            string MyConnection2 = "datasource=localhost;username=root;password=";
            //This is my insert query in which i am taking input from the user through windows forms  
            string Query = "insert into game4rent.klanten(voornaam,achternaam,straat,huisnummer,woonplaats) values('" + this.txtVoornaam.Text + "','" + this.txtAchternaam.Text + "','" + this.txtStraat.Text + "','" + this.txtHuisnummer.Text + "','" + this.txtWoonplaats.Text + "');";
            //This is  MySqlConnection here i have created the object and pass my connection string.  
            MySqlConnection MyConn2 = new MySqlConnection(MyConnection2);
            //This is command class which will handle the query and connection object.  
            MySqlCommand MyCommand2 = new MySqlCommand(Query, MyConn2);
            MySqlDataReader MyReader2;
            MyConn2.Open();
            MyReader2 = MyCommand2.ExecuteReader();     // Here our query will be executed and data saved into the database.  
            MessageBox.Show("Save Data");
            while (MyReader2.Read())
            {
            }
            MyConn2.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

    }

最佳答案

您正在尝试在打开连接之前执行查询:

MyReader2 = sc.ExecuteReader();
conn.Open();

如错误所述,连接必须在 执行查询之前打开:

conn.Open();
MyReader2 = sc.ExecuteReader();

关于c# - MySQL C#错误; "connection must be valid and open",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50329782/

相关文章:

c# - 在 AvalonEdit 控件上启用代码折叠

php - 对非对象调用成员函数 fetch_assoc()。 mysql

mysql - 无法为表创建外键约束

mysql - 不在查询中的列的更新语句中的未知列

c# - 多次抛出 "Missing compiler required member"错误,几乎没有更改代码

c# - int 数据类型的服务器端验证

c# - 计算 txt 文件中的单行数 C#

c# - SQL 表引用多个外键,同时定义顺序并保证参照完整性

sql - 如何在 NHibernate 中编写以下 SQL 查询

sql - MS Access FE/SQL BE 保存后需要自动编号填充到表单上