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