我想删除一本图书管理系统里的图书,请问这句话哪里错了啊?

来源:百度知道 编辑:UC知道 时间:2024/06/18 08:16:25
string id = this.GridView1.SelectedDataKey["Sid"].ToString();

OleDbConnection con = DB.con();
con.Open();
OleDbCommand cmd = new OleDbCommand("delete from borrow where Sid=" + Convert.ToInt32(id), con);
cmd.ExecuteNonQuery();
this.gridViewBind();
con.Close();
cmd.ExecuteNonQuery(); 经常提示异常 标准表达式中数据类型不匹配。

where Sid='id' 数据库中是不是需要这么写,而你的SQL语句没有单引号

原因分析:
错误提示:标准表达式中数据类型不匹配
分析过程:从提示很容易可以看到发生异常的地方在Convert.ToInt32(id)这里,你Convert.ToInt32(id)这个意思是将string id转为int32型 假设你传入的id是个字符串"abc" 在调用Convert.ToInt32(id)的时候就会报数据类型不匹配。所以可以断定从this.GridView1.SelectedDataKey["Sid"].ToString()获取到的值有时不是数字,而是字符串,在进行Convert.ToInt32(id)转换时就会报错。另备注:楼上的说“where Sid='id' 数据库中是不是需要这么写,而你的SQL语句没有单引号 ” 我看你是把id转换成int32型的 那数据库字段Sid应该是int 型 所以不必加单引号。

解决方案:最好在Convert.ToInt32(id)之前对id进行数据类型判断。

string id = this.GridView1.SelectedDataKey["Sid"].ToString();

确定是 数字整形的吗?