C# 将mysql数据库中的数据显示到listbox(从combobox中选择的数据)c中#

C# 将mysql数据库中的数据显示到listbox(从combobox中选择的数据)c中#,c#,mysql,combobox,C#,Mysql,Combobox,所以我试图将数据库中的数据显示到列表框中。但是我想看到的数据我在组合框中选择,所以我打开组合框选择数据,然后它应该会显示一些数字,我正在尝试一些东西,但我不确定它是否正确,请帮助我 守则: private void listBox2_SelectedIndexChanged(object sender, EventArgs e) { string constring = "datasource=localhost;port=3306;username=root;passw

所以我试图将数据库中的数据显示到列表框中。但是我想看到的数据我在组合框中选择,所以我打开组合框选择数据,然后它应该会显示一些数字,我正在尝试一些东西,但我不确定它是否正确,请帮助我

守则:

private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        string constring = "datasource=localhost;port=3306;username=root;password=";
        string Query = "Select ocena From filmi.film Where film = @film"; ;
        MySqlConnection conDataBase = new MySqlConnection(constring);
        MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
        cmdDataBase.Parameters.AddWithValue("@film", this.comboBox1.SelectedItem);
        MySqlDataReader myReader;
        try
        {
            conDataBase.Open();
            myReader = cmdDataBase.ExecuteReader();
            while (myReader.Read())
            {
                listBox2.Items.Add(myReader);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

您应该引用要添加到列表框中的字段

listBox2.Items.Add(myReader["ocena"].ToString());
如果字段ocena可能包含空值,则需要

string ocenaValue = (myReader.IsDBNull(myReader.GetOrdinal("ocena")) ?
                    string.Empty, myReader["ocena"].ToString());
listBox2.Items.Add(ocenaValue);
最后,我建议在一次性物品周围使用Using语句。这样,在异常情况下,当您完成使用连接、命令和读取器时,它们将被关闭和释放

    string constring = "datasource=localhost;port=3306;username=root;password=";
    string Query = "Select ocena From filmi.film Where film = @film"; ;
    using(MySqlConnection conDataBase = new MySqlConnection(constring))
    using(MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase))
    {
        try
        {
            conDataBase.Open();
            cmdDataBase.Parameters.AddWithValue("@film", this.comboBox1.SelectedItem);
            using(MySqlDataReader myReader = cmdDataBase.ExecuteReader())
            {
               while (myReader.Read())
               {
                   string ocenaValue = (myReader.IsDBNull(myReader.GetOrdinal("ocena")) ?
                                       string.Empty : myReader["ocena"].ToString());
                   listBox2.Items.Add(ocenaValue);
                }

            }

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

Ocena是数据库表还是表中的项?引用列名,而不是项或数据库表,您将获得数据。e、 g

listBox2.Items.Add(myReader[“film”].ToString())

将为您提供电影专栏中的所有项目


您已经很久没有发布了,但是它可以帮助其他人。

如果我这样做,我会得到这个错误
“myReader”是一个“变量”,但像“方法”一样使用。
如果我只添加
列表框2.Items.add(myReader[“ocena”].ToString()),我应该将字符串ocenaValue放在哪里它不起作用您是否显示了任何错误或列表框中没有数据?如果不存在数据,则可能没有与您的参数对应的记录?如果我添加
listBox2.Items.add(myReader[“ocena”].ToString())列表框中没有数据如果我把你写的所有东西都放进去,我会得到9个错误,比如
错误以及类似代码的错误
;预期
再次修复了缺少的答案:。我认为您应该使用调试器来检查为什么没有数据。在ExecuteReader行上放置一个断点,然后逐步进行,以确保循环至少执行一次。如果SelectedItem中的值是您期望的值,请查看该值。