0

我已经将我的数据库与我的 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 服务器版本相对应的手册以获取正确的语法以使用在第 1 行的 '='Espresso'' 附近"

数据库中的代码如下:

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'), (...)    

请问你能帮我吗??

4

1 回答 1

1

它失败的查询是:

"select * from apps.drinks where drink_name is ='" + listBox1.Text + "'; "

你有is =不正确的,删除is​​所以查询看起来像:

"select * from apps.drinks where drink_name ='" + listBox1.Text + "'; "

还要认真对待w0lf的评论,并使用准备好的语句来防止SQL 注入

于 2013-08-18T13:55:54.523 回答