2015-03-22 5 views
0

У меня возникли проблемы с моим кодом и я не получил никакого результата из найденных ресурсов, так что ниже мой пример, когда я выбираю из combobox значение, которое запускает событие SelectionChangeCommitted, и должно заполните мой элемент управления listview датой, из базы данных, связанной с моим SELECT, но я получаю сообщение об ошибке, и я не знаю, как с этим справиться, я был бы признателен, если кто-то может мне помочь.Заполните список из combobox

В конструкторе я этот код:

this.medic.SelectionChangeCommitted += new EventHandler(medic_SelectionChangeCommitted); 

private void medic_SelectionChangeCommitted(object sender, EventArgs e) 
{ 
    SqlDataAdapter alegsectie = new SqlDataAdapter("SELECT C.denumire,OC.Data,OC.ora_inc,OC.ora_sf FROM cabinete AS C INNER JOIN orar_clinica AS OC ON c.id_cabinet = OC.id_cabinet INNER JOIN medici AS M ON OC.id_medic = M.id_medic and M.nume =" + medic.SelectedValue, conn); 

    DataSet listView1 = new DataSet(); 
    alegsectie.Fill(listView1); 

ОШИБКА:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Conversion failed when converting the varchar value 'pop' to data type int.

'поп' является SelectedValue в ComboBox.

+1

Какой тип столбца 'M.nume'? И используйте параметризованные запросы вместо конкатенации строк. Это делает ваш запрос открытым для атак SQL Injection. –

+0

- это Winforms? – Plutonix

+0

M.nume - это varchar (30), я проверяю запрос на сервере sql и его правильно. –

ответ

2

Если M.nume имеет типа VARCHAR вам потребуется значение быть завернуто в одиночных кавычках для того, чтобы инструкции SQL, чтобы быть действительными:

SqlDataAdapter alegsectie = new SqlDataAdapter("SELECT C.denumire,OC.Data,OC.ora_inc,OC.ora_sf FROM cabinete AS C INNER JOIN orar_clinica AS OC ON c.id_cabinet = OC.id_cabinet INNER JOIN medici AS M ON OC.id_medic = M.id_medic and M.nume ='" + medic.SelectedValue + "'", conn); 

Однако обратите внимание, что этот подход к управлению запросам уязвим до Sql injection. Возможно, подумайте об использовании parameters для запуска ваших запросов.

Надеюсь, что поможет

+0

Хорошая точка в отношении всплывающей оболочки sql ... плюс 1 для этого! –

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