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中的值是您期望的值,请查看该值。