如何解决这个“SQL语法错误”

时间:2013-08-18 13:52:55

标签: c# mysql

我已将我的数据库与我的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'), (...)    

请你能帮助我吗?

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