2013-08-18 3 views
0

Я связал свою базу данных с моей формой окна, я поместил значения столбца таблицы базы данных в список, и я хочу сделать следующее: когда я выбираю элемент из списка, другой столбец таблицы появится в другом текстовом поле. Чтобы быть более конкретным, имена напитков появляются в списке (эспрессо, вода и т. Д.), И я хочу, чтобы их цена отображалась в текстовом поле, когда они выбраны из списка. Я использовал следующий код, чтобы сделать это:Как решить эту «ошибку в синтаксисе SQL»

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; 
     } 

    }  

После того как я отладка моего проекта, он успешно показывает пункты в ListBox, но когда я выбираю их я получаю эту ошибку «Вы имеете ошибку в вашем синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса для использования вблизи «=» Эспрессо «» в строке 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'), (...)  

Пожалуйста, вы можете помочь меня??

+3

параметризуйте свой запрос, в противном случае вы запрашиваете [it] (https://www.owasp.org/index.php/SQL_Injection) – GolfWolf

ответ

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.

+0

Большое спасибо, это сработало !!! –

Смежные вопросы