我的代码遇到了一些问题并且没有从找到的资源中获得任何结果,所以下面是我的例子,当我从组合框中选择一个值时,事件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'是组合框中的选定值。
答案 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来运行查询。
希望有所帮助