我得到这个参数:
$objDbCmd.Parameters.Add("@telephone", [System.Data.SqlDbType]::VarChar, 18) | Out-Null;
$objDbCmd.Parameters["@telephone"].Value = $objUser.Telephone;
字符串在哪里$objUser.Telephone
可以为空。如果它是空的,我怎样才能将它转换为[DBNull]::Value
?
I tried:
if ([string]:IsNullOrEmpty($objUser.Telephone)) { $objUser.Telephone = [DBNull]::Value };
但这给了我错误:
使用“0”个参数调用“ExecuteNonQuery”时出现异常:“无法将参数值从 ResultPropertyValueCollection 转换为字符串。”
如果我将其转换为字符串,它会插入一个空字符串""
, 并不是DBNull
.
如何才能做到这一点?
Thanks.
在 PowerShell 中,您可以将 null/空字符串视为布尔值。
$x = $null
if ($x) { 'this wont print' }
$x = ""
if ($x) { 'this wont print' }
$x = "blah"
if ($x) { 'this will' }
所以......话虽如此,你可以这样做:
$Parameter.Value = $(if ($x) { $x } else { [DBNull]::Value })
但我更愿意将其包装在一个函数中,例如:
function CatchNull([String]$x) {
if ($x) { $x } else { [DBNull]::Value }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)