Tom*_*sen 7 sql powershell dbnull
我有这个参数:
$objDbCmd.Parameters.Add("@telephone", [System.Data.SqlDbType]::VarChar, 18) | Out-Null;
$objDbCmd.Parameters["@telephone"].Value = $objUser.Telephone;
Run Code Online (Sandbox Code Playgroud)
字符串$objUser.Telephone可以为空.如果它是空的,我怎么能把它转换成[DBNull]::Value?
我试过了:
if ([string]:IsNullOrEmpty($objUser.Telephone)) { $objUser.Telephone = [DBNull]::Value };
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
使用"0"参数调用"ExecuteNonQuery"的异常:"无法将参数值从ResultPropertyValueCollection转换为String."
如果我将它转换为字符串,它会插入一个空字符串"",而不是DBNull.
如何实现这一目标?
谢谢.
Jos*_*osh 17
在PowerShell中,您可以将null /空字符串视为布尔值.
$x = $null
if ($x) { 'this wont print' }
$x = ""
if ($x) { 'this wont print' }
$x = "blah"
if ($x) { 'this will' }
Run Code Online (Sandbox Code Playgroud)
所以....说你可以这样做:
$Parameter.Value = $(if ($x) { $x } else { [DBNull]::Value })
Run Code Online (Sandbox Code Playgroud)
但我更倾向于将其包装在以下函数中:
function CatchNull([String]$x) {
if ($x) { $x } else { [DBNull]::Value }
}
Run Code Online (Sandbox Code Playgroud)
我不知道powershell,但在C#中我会做这样的事情:
if ([string]::IsNullOrEmpty($objUser.Telephone))
{
$objDbCmd.Parameters["@telephone"].Value = [DBNull]::Value;
}
else
{
$objDbCmd.Parameters["@telephone"].Value = $objUser.Telephone;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23857 次 |
| 最近记录: |