我在datagrid控件里实现编辑功能,但出现了上述的提示错误。代码如下:
cm.Parameters.Add(new SqlParameter( "@Name ",SqlDbType.VarChar,100));
cm.Parameters.Add(new SqlParameter( "@Type ",SqlDbType.Int,4));
cm.Parameters.Add(new SqlParameter( "@Publisher ",SqlDbType.VarChar,100));
cm.Parameters.Add(new SqlParameter( "@Price ",SqlDbType.Decimal,9));
string colvalue=((TextBox)e.Item.Cells[1].Controls[0]).Text.Trim();
cm.Parameters[ "@Name "].Value=colvalue;
colvalue=((TextBox)e.Item.Cells[2].Controls[0]).Text.Trim();
cm.Parameters[ "@Type "].Value=colvalue;
colvalue=((TextBox)e.Item.Cells[3].Controls[0]).Text.Trim();
cm.Parameters[ "@Publisher "].Value=colvalue;
colvalue=((TextBox)e.Item.Cells[4].Controls[0]).Text.Trim();
cm.Parameters[ "@Price "].Value=colvalue;
cm.Connection.Open();
cm.ExecuteNonQuery();
cm.Connection.Close();
编译通过,但运行时出现:
输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.FormatException: 输入字符串的格式不正确。
请大家帮我分析一下。
------解决方案--------------------------------------------------------
colvalue=((TextBox)e.Item.Cells[4].Controls[0]).Text.Trim();
cm.Parameters[ "@Price "].Value=colvalue;
price应该是int类型或者double类型的吧
要先转换成int类型再赋给参数
------解决方案--------------------------------------------------------
( "@Type ",SqlDbType.Int,4)); 与( "@Price ",SqlDbType.Decimal,9));的赋值要转换成相应的类型
------解决方案--------------------------------------------------------
可以参考下下面的代码:
colvalue=((TextBox)e.Item.Cells[2].Controls[0]).Text.Trim();
int type = 0;
if (int.TryParse(colValue, out type))
{
cm.Parameters[ "@Type "].Value=type;
}
else
{
return;//格式不正确,可以重试
}
colvalue=((TextBox)e.Item.Cells[4].Controls[0]).Text.Trim();
decimal price = 0.0m;
if (decimal.TryParse(colValue, out price))
{
cm.Parameters[ "@Price "].Value=price;
}
else
{
return;//格式不正确,可以重试
}
------解决方案--------------------------------------------------------
cm.Parameters.Add(new SqlParameter( "@Type ",SqlDbType.Int,4));
-------------------------------------
int型不可能指定长度的,decimal不知道,你可以试一下
------解决方案--------------------------------------------------------
这样写一条SQL语句实在太麻烦了
建议改为:
strSQL= "insert into table1(col1,col2) values(val1,val2) ";
值部分,数值型的不加单引号,字符型的加单引号,执行该SQL语句,3行就可以搞定,多方便!
------解决方案--------------------------------------------------------
LS那位兄弟,你这样写的是容易,不过被人攻击的时候就哭都来不及了。