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

The*_*lla 2 c# sql asp.net sqlclient

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

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

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

productName != ""
    ? myCommand.Parameters.AddWithValue("@ProductName", productName)
    : myCommand.Parameters.AddWithValue("@ProductName", DBNull.Value);
Run Code Online (Sandbox Code Playgroud)

Yuc*_*uck 6

使用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
);
Run Code Online (Sandbox Code Playgroud)

或者使用null和不使用显式强制转换:

myCommand.Parameters.AddWithValue(
    "@ProductName",
    ! String.IsNullOrWhiteSpace(productName) ? productName : null
);
Run Code Online (Sandbox Code Playgroud)