有关DataGrid1_UpdateCommand事件更新flaot类型的问题~急
我用C#.net2003写的用DataGrid的按钮列(已设为模板列)更新价格数据,我在SQL Server2000中有一个价格数据表,列名:sID(int型、主键)、sName(varchar型)、sPrice(float型,允许空)以下为我写的DataGrid1_UpdateCommand事件的更新代码
private void DataGrid1_UpdateCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string ID=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string Price=((TextBox)(e.Item.Cells[3].Controls[1])).Text;
//以下为数据库更新语句
SqlConnection Updatecon=DBCon.createCon();
Updatecon.Open();
SqlCommand Updatecmd=new SqlCommand("update prices set sPrice='"+Price+"' where sID='"+ID+"'",Updatecon); //数据表名prices 价格
Updatecmd.ExecuteNonQuery();
Updatecon.Close();
this.DataGrid1.EditItemIndex=-1;
this.BindToData(); //调用显示绑定,略
}
现在的问题是:做好后使用更新语句从数据库更新没问题,但我为了试验,在更新文本框Textbox中输入负数、非数字等时,点击更新后价格数据变为0,并且再次更新时始终为0,改不过来了...-__-!请问这是怎么回事啊?怎样解决~各位高手 --------------------编程问答-------------------- 把Price的单引号去掉试试
--------------------编程问答-------------------- 不行啊,去掉后点"更新"按钮提示:where附近有语法错误 ?__? --------------------编程问答--------------------
SqlCommand Updatecmd=new SqlCommand("update prices set sPrice='"+Price+"' where sID='"+ID+"'",Updatecon); //数据表名prices 价格
改成
SqlCommand Updatecmd=new SqlCommand("update prices set sPrice="+Price+" where sID='"+ID+"'",Updatecon); //数据表名prices 价格
--------------------编程问答-------------------- wangkun9999大大,这样似乎效果一样,我试了下还是 "where附近有语法错误",DataGrid编辑列点"更新"时出错... --------------------编程问答-------------------- ToDecimal Price=Convert.ToDecimal(((TextBox)(e.Item.Cells[3].Controls[1])).Text.Trim());
string sql="update prices set sPrice="+Price+" where sID='"+ID+"'";
SqlCommand Updatecmd=new SqlCommand(sql,Updatecon);
--------------------编程问答--------------------
--------------------编程问答-------------------- 我将类型改为decimal,并使用以上语句,错误提示:输入字符串的格式不正确。
Decimal Price=Convert.ToDecimal(((TextBox)(e.Item.Cells[3].Controls[1])).Text.Trim());
晕了..还是谢谢楼上的朋友^^ --------------------编程问答-------------------- 我将Price单引号去掉了的,"update prices set sPrice="+Price+" where sID='"+ID+"'" --------------------编程问答-------------------- 把生成的sql语句直接放数据库里试~--! --------------------编程问答-------------------- 楼上的说的是存储过程吗?不太明白...求解 --------------------编程问答-------------------- 数据库中price字段要是Decimal类型的,然后按照1楼写SQL语句,在更新之前,将输入价格的输入框进行转换:
decimal Price=decimal.Parse(TextBox1.Text.Trim());
按照这个流程来,应该没问题。 --------------------编程问答-------------------- SqlCommand Updatecmd=new SqlCommand("update prices set sPrice='"+Price+"' where sID='"+ID+"'",Updatecon); //数据表名prices 价格
改成
SqlCommand Updatecmd=new SqlCommand("update prices set sPrice="+Price+" where sID="+ID+"",Updatecon); //数据表名prices 价格
int 类型的不要用 ' 符号,呵
--------------------编程问答-------------------- int ID=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
decimal Price=decimal.Parse(TextBox1.Text.Trim());
要和数据库里的字段相对应!!!!!!!!!!!!!!!!!!!!!!!!!!1 --------------------编程问答-------------------- ("update prices set sPrice='"+Price+"' where sID='"+ID+"')
把这个放sql看能运行通过不~
补充:.NET技术 , ASP.NET