我正在尝试将值存储在数据库中。 如果它是一个int。
,如何在数据库中赋值NULL查询:
@id varchar(10)
UPDATE [Table] SET
[id] = @id -- id is an int in sql
C#代码:
我传递了值:
//dATABASE CONNECTION
db.StoredProcedure = "UpdateProjectValues";
db.Paramater("ID",TB_ID.TEXT); //tb_id.text=""
如果它有值,则存储该int,但如果我没有该值,则存储0,但我希望存储NULL。
答案 0 :(得分:2)
严格在数据库内的一个解决方案是:
UPDATE [Table]
SET [id] = (case when @id <> '' then cast(@id as int) end);
这使转换显式化。但是,最好设置C#代码以传递一个可以取NULL
值的整数值。
答案 1 :(得分:0)
我认为我提供了一些选择:
1)。处理存储过程中的值。 Gordon的CASE语句有效,但既然您使用的是SQL Server,那么您还可以使用NULLIF()函数,如下所示:
UPDATE TABLE
SET [id] = NULLIF(@ID, '');
2。)使用三元运算符在C#代码中处理:
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "UpdateProjectValues";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ID", string.IsNullOrWhiteSpace(TB_ID.TEXT) ? DBNull.Value : (object)TB_ID.TEXT);
还有其他方法,但这些都是简单的例子。