编程语言
首页 > 编程语言> > c# – 是否有更优雅的形式为InsertCommand的NVarChar分配NULL?

c# – 是否有更优雅的形式为InsertCommand的NVarChar分配NULL?

作者:互联网

这段代码非常适合我:

if (someStr == null)
  da.InsertCommand.Parameters.Add("@SOMESTR", SqlDbType.NVarChar).Value = DBNull.Value;
else
  da.InsertCommand.Parameters.Add("@SOMESTR", SqlDbType.NVarChar).Value = someStr;

但我的直觉告诉我,可能有一个单行版本.就像是:

  da.InsertCommand.Parameters.Add("@SOMESTR", SqlDbType.NVarChar).Value = someStr==null ? DBNull.Value : someStr ;

但是我上面发布的单行代码当然失败了,因为DBNull.Value没有强制转换为String.

有没有办法完成我想要的一个班轮?

解决方法:

您可以将someStr转换为对象

例如:

da.InsertCommand.Parameters.Add("@SOMESTR", SqlDbType.NVarChar).Value = someStr==null ? DBNull.Value : (object)someStr;

或者你可以像Oded和Servy那样建议并使用扩展方法.虽然它可能会添加几行代码,但它可以避免重复代码.

正如Servy指出的那样,把它放在物体上可能会导致混乱.出于这个原因,我会把它放在SqlParameter上

public static void SetValue(this SqlParameter parameter, object value)
{
    parameter.Value = value == null ? DBNull.Value : value;
}

然后像这样使用它

da.InsertCommand.Parameters.Add("@SOMESTR", SqlDbType.NVarChar).SetValue(someStr);

标签:c,sql-server,sql-insert,sqldataadapter
来源: https://codeday.me/bug/20190713/1446972.html