从组合框中填写列表视图

时间:2015-03-22 16:01:35

标签: c# listview combobox

我的代码遇到了一些问题并且没有从找到的资源中获得任何结果,所以下面是我的例子,当我从组合框中选择一个值时,事件SelectionChangeCommitted被激活并且应该填满我的listview控件的日期,来自与我的SELECT相关的数据库,但我收到错误,我不知道如何处理它,如果有人可以帮助我,我会很感激。

在构造函数中我有这段代码:

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

ERROR:

  

类型'System.Data.SqlClient.SqlException'的未处理异常   发生在System.Data.dll

中      

其他信息:转换varchar时转换失败   值'pop'到数据类型int。

'pop'是组合框中的选定值。

1 个答案:

答案 0 :(得分: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来运行查询。

希望有所帮助