当前位置: 代码迷 >> ASP.NET >> 错误详细信息: System.FormatException: 输入字符串的格式不正确
  详细解决方案

错误详细信息: System.FormatException: 输入字符串的格式不正确

热度:4074   发布时间:2013-02-25 00:00:00.0
异常详细信息: System.FormatException: 输入字符串的格式不正确?
我在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那位兄弟,你这样写的是容易,不过被人攻击的时候就哭都来不及了。
  相关解决方案