c# - 是否可以传递一个参数 DB.null 并在数据库中设置一个等于该值的值?

标签 c# asp.net sql sqlclient

我从数据库中提取数据(1 条记录)并将每个值放入文本框或下拉列表中。其中一些值是 DB.null。如果是,我将它们中的每一个都转换为“”(空白)。但是,一旦用户修改了文本框/下拉列表,他们就可以“保存”新结果。我的问题是:

如果用户留下空白,我希望能够保持该值为 DB.null。有办法做到这一点吗?

此外,如果文本框中有一个值并且用户决定删除它,我是否也可以将其转换为 DB.Null?以下是我试图给你们一些想法:

productName != ""
    ? myCommand.Parameters.AddWithValue("@ProductName", productName)
    : myCommand.Parameters.AddWithValue("@ProductName", DBNull.Value);

最佳答案

对于 SQL Server,我相信您可以互换使用 nullDBNull.Value 将值设置为 NULL

我还将您的代码更改为:

myCommand.Parameters.AddWithValue(
    "@ProductName",
    // this requires a cast as ?: must return the same type
    String.IsNullOrWhiteSpace(productName)
        ? (object)DBNull.Value
        : (object)productName
);

或者使用 null 并且没有显式转换:

myCommand.Parameters.AddWithValue(
    "@ProductName",
    ! String.IsNullOrWhiteSpace(productName) ? productName : null
);

关于c# - 是否可以传递一个参数 DB.null 并在数据库中设置一个等于该值的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491337/

相关文章:

c# - Mvvm Light、UWP 和代码隐藏

asp.net - 处理 WIF 中的并发身份提供商声明

c# - 如果已经打开,请关闭 Telerik Radgrid Editform

c# - 在 View 的引擎 Razor 中将参数作为模型传递

sql - 在 WHERE 子句中使用带有 LIKE 的参数化 SQL(Pervasive SQL)

php - 带变量的复杂sql查询

c# - 如何防止 DateTime 在带有区域性信息的 XML 中序列化?

c# - 如何裁剪部分gif图像?

sql - 在 Oracle ALL_CONSTRAINTS 中仅查找用户定义的检查约束

c#定义时填充哈希表