2017-05-11 23 views
0

我有一個在哈希格式的列值在數據庫和列數據類型是varbinary(8000)。我把它轉換成字節數組。如何檢查字節()在IIB條件空vb

問題是一段時間,此列值空值,現在我的代碼,我要檢查,如果列的值都是空值,則返回字節數組的默認值,否則使用返回列的值下面的代碼

objUser.Password_Hash = IIf(reader("Password_Hash") Is Nothing, {}, reader("Password_Hash")) 

這給瞭如下錯誤

System.InvalidCastException: Unable to cast object of type 'System.Byte' to type 'System.Byte[]'. 

回答

1

首先,除非你正在使用的版本太舊了,該If操作符不存在不VB使用IIf。我認爲這將意味着VB 2005.

其次,來自數據庫的NULL值不是在VB中的Nothing。它實際上是一個對象,特別是DBNull類的一個實例,由DBNull.Value字段表示。

第三,而如果需要的話你可以直接比較DBNull.Value,數據讀取和DataRows居然有專門專門測試NULL的方法。

所以,把他們放在一起:

objUser.Password_Hash = If(reader.IsDBNull(reader.GetOrdinal("Password_Hash")), 
          New Byte() {}, 
          DirectCast(reader("Password_Hash"), Byte())) 
+0

奈斯利解釋!!!! – SajidBp