2017-02-16 40 views
4

我從數據庫中提取數據(特別是使用ADO訪問)。然後,我準備將可能插入到SQL中的變量通過用兩個單引號替換任何現有的單引號。PowerShell替換失敗後測試爲空

因爲來自數據庫的值非常可能爲空,所以我測試它,並且只有在非空時纔會發生替換。我得到它的價值不登記爲空時,我測試了一下,但是當我試圖替換,我得到的錯誤

方法調用失敗,因爲[System.DBNull]不包含名爲方法「替換」。

這裏的代碼
$OldAbstract = $rs.Fields.Item("MetaAbstract").value if($OldAbstract -ne $null) {$OldAbstract = $OldAbstract.Replace("'","''")}

部分拉動值後,我打印出來,它看起來像什麼。我測試了它爲空,它說它不是。我測試了它的「」,事實並非如此。我甚至檢查過它是否是一個空間,事實並非如此。報告的長度爲1 ...我對於發生了什麼事情感到不知所措。

回答

3

您正在測試錯誤類型的null - PowerShell/.net null而不是數據庫null。試試這個(未經測試):

$OldAbstract = $rs.Fields.Item("MetaAbstract").value 
if($OldAbstract -isnot [System.DBNull]) {$OldAbstract = $OldAbstract.Replace("'","''")} 
+0

標記爲答案,如果它的工作,謝謝:) – TechSpud

+0

看起來像測試[System.DBNull] ::值工作。謝謝!最終的代碼是: if($ OldAbstract -ne [System.DBNull] :: Value){$ OldAbstract = $ OldAbstract.Replace(「'」,「''」)} – Michael

+0

很酷。沒問題 :) – TechSpud