【发布时间】:2015-07-29 21:36:53
【问题描述】:
我很可能在这里遗漏了一些简单的东西,因为我对此很陌生,但我无法弄清楚。 我有一个 C# 应用程序,它获取一些用户输入的数据并更新 SQL Server 数据库。我正在更新的数据库字段之一称为“TransectLength”,其数据类型为“decimal(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 是一个数据行。 dr["TransectLength"] 的值为 2.5,类型为 object{decimal}。 当我尝试时:
cmd.ExecuteNonQuery();
我收到将数据类型 varchar 转换为数字的 SQL 异常错误。 请参阅下面的参数@tl。 SqlDbType 是十进制。如果我没有为 TransectLength 输入任何内容(即 dr["TransectLength"] 值为 {}),那么更新查询就可以正常工作并适当地输入一个 sql NULL 值。 我也试过这个:
cmd.Parameters.AddWithValue("@tl", Convert.ToDecimal(dr["TransectLength"]));
【问题讨论】:
标签: c# sql-server