【问题标题】:SQLException: Error converting data type varchar to numericSQLException:将数据类型 varchar 转换为数字时出错
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • NULLIF(@t1, 0.0)。如果您的列数据类型为decimal,则不能默认为varchar 值。
    • 啊!美丽的!非常感谢。我知道它必须是简单的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2014-10-08
    相关资源
    最近更新 更多