源代码:
public void DataGrid_Update(Object sender,DataGridCommandEventArgs E)
{ //从文件Web.config中读取连接字符串
string strconn= ConfigurationSettings.AppSettings["dsn"];
//连接本地计算机的book数据库
SqlConnection cn= new SqlConnection (strconn);
cn.Open ();
SqlCommand cm=new SqlCommand ("ordermodify",cn);
//将命令类型转为存储类型
cm.CommandType =CommandType.StoredProcedure ;
cm.Parameters .Add ("@OID",SqlDbType.Int );
cm.Parameters .Add (new SqlParameter ("@OQuantity",SqlDbType.Int));
//从DateGrid中取得更新依据内容,Cells [0]为OQuantity列
string OIDvalue=E.Item.Cells[0].Text .ToString ();
cm.Parameters ["@OID"].Value =Convert.ToInt16 (OIDvalue);
//从DateGrid中取得更新内容
string OQuantityvalue=((TextBox)E.Item.FindControl ("tbx_oquantity")).Text .ToString ();
cm.Parameters ["@OQuantity"].Value =Convert.ToInt16 (OQuantityvalue);
cm.ExecuteNonQuery ();
dgd_orderstate.EditItemIndex =-1;
BindGrid();
BindLabel();
}
存储过程如下:
CREATE PROCEDURE OrderModify
(@OID varchar,
@OQuantity int
)
AS update Orders
set OQuantity=@OQuantity
where
(OID=@OID)
GO
运行,当tbx_oquantity所对应的文本框中输入数字,点击“更新”按钮时出错
将 varchar 值 '*' 转换为数据类型为 int 的列时发生语法错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 将 varchar 值 '*' 转换为数据类型为 int 的列时发生语法错误。
源错误:
行 136: string OQuantityvalue=((TextBox)E.Item.FindControl ("tbx_oquantity")).Text .ToString ();
行 137: cm.Parameters ["@OQuantity"].Value =Convert.ToInt16 (OQuantityvalue);
行 138: cm.ExecuteNonQuery ();
行 139: dgd_orderstate.EditItemIndex =-1;
行 140: BindGrid();