SQLException:将数据类型varchar转换为numeric时出错

时间:2015-07-29 21:36:53

标签: c# sql-server

我很可能在这里错过了一些简单的东西,因为我对此很新,但我无法弄清楚这一点。 我有一个C#应用程序,它接受一些用户输入的数据并更新SQL Server数据库。我正在更新的一个数据库字段名为" TransectLength"并且数据类型为'十进制(5,1)'。 SQL看起来像这样:

string updateSQL = "UPDATE " + table1 + " SET TransectLength = NULLIF(@tl, '') WHERE ObjectID = @oid";
SqlCommand cmd = new SqlCommand(updateSQL, conn); 

参数@tl:

cmd.Parameters.AddWithValue("@tl", dr["TransectLength"]);

dr是一个DataRow。 dr [" TransectLength"]的值为2.5,类型为对象{decimal}。 当我尝试:

cmd.ExecuteNonQuery();

我得到将数据类型varchar转换为数字的SQL异常错误。 请参阅下面的参数@tl。 SqlDbType是十进制的。如果我没有为TransectLength输入任何内容(即dr [" TransectLength"]值为{}),则更新查询工作正常并适当地输入sql NULL值。 我也试过这个:

cmd.Parameters.AddWithValue("@tl", Convert.ToDecimal(dr["TransectLength"]));

但没有改变。 谢谢你的帮助。 enter image description here

1 个答案:

答案 0 :(得分:3)

NULLIF(@tl, '')更改为ISNULL(@tl, 0.0)