2013-07-06 97 views
1

我在我的數據庫表的Image列中有二進制圖像,但在Image列中有一些null值。因此拋出異常,如何處理字節[]中的空值[

byte [] data =(byte [])ds.Tables [0] .Rows [0] [0]`因爲空。

如何處理?

異常消息,

無法轉換類型的對象 'System.DBNull' 爲類型 'System.Byte []'。

我的代碼,

using (var sqlConn = new SqlConnection(connstr)) 
{ 
    sqlConn.Open(); 
    ds = new DataSet(); 

    SqlDataAdapter sqa = new SqlDataAdapter("Select Image from Templates where Shoe='" + selectedShoe + "'", sqlConn); 

    sqa.Fill(ds); 

    //i got error here 
    byte[] data = (byte[])ds.Tables[0].Rows[0][0]; 

    ..... 

回答

4

您需要在嘗試中投之前在該列專門檢查DBNull

byte[] data = null; 
if (!ds.Tables[0].Rows[0].IsNull(0)) 
    data = (byte[])ds.Tables[0].Rows[0][0]; 

注意,這將失敗,如果同一類型的異常有問題的列確實是而不是包含一個字節數組。

+0

哦,我明白你的解釋。它現在有效。非常感謝! :) – user1358072

0

在SQL查詢中處理空值爲我工作。如果您的圖像列爲空,則ISNULL()函數將返回您的下一個值(在本例中爲0)。

SqlDataAdapter sqa = new SqlDataAdapter("SELECT ISNULL([Image],0) AS Image FROM Templates where Shoe='" + selectedShoe + "'", sqlConn);