我已将我的数据库与我的Windows窗体连接,我将数据库表列的值放在列表框中,我想执行以下操作:当我从列表框中选择一个项目时,该表的另一列将出现在另一个文本框中。更具体地说,饮料名称出现在列表框(浓咖啡,水等)中,我希望它们的价格出现在文本框中,当它们从列表框中选择时。我使用以下代码来做到这一点:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string constring = "datasource=localhost;port=3306;username=root;password=root;";
string Query = "select * from apps.drinks where drink_name is ='" + listBox1.Text + "'; ";
MySqlConnection conDatabase = new MySqlConnection(constring);
MySqlCommand cmdDatabase = new MySqlCommand(Query, conDatabase);
MySqlDataReader myReader;
conDatabase.Open();
myReader = cmdDatabase.ExecuteReader();
while (myReader.Read())
{
string dprice = myReader.GetString("drink_price");
pricebox.Text = dprice;
}
}
我调试项目后,它成功显示列表框中的项目,但是当我选择它们时,我收到此错误“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册在'='Espresso''第1行附近使用的语法
数据库中的代码如下:
DROP TABLE IF EXISTS `apps`.`drinks`;
CREATE TABLE `apps`.`drinks` (
`drink_name` varchar(45) NOT NULL,
`drink_price` varchar(45) NOT NULL,
PRIMARY KEY (`drink_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into apps.drinks (drink_name,drink_price)
values ('Nes','1'),('Espresso','1'), (...)
请你能帮助我吗?
答案 0 :(得分:1)
失败的查询是:
"select * from apps.drinks where drink_name is ='" + listBox1.Text + "'; "
如果您is =
不正确,请删除is
,以便查询如下:
"select * from apps.drinks where drink_name ='" + listBox1.Text + "'; "
同时认真对待w0lf的评论,并使用prepared statements来阻止SQL injection。