2010-05-19 82 views
1

我的數據庫中的一列(double類型)有一些空值。 我執行sored過程,以獲得我的應用程序中的數據空列出現問題

wipDBTableAdapters.XLSFacturiTableAdapter TAFacturi = new wipDBTableAdapters.XLSFacturiTableAdapter(); 
       var dtfacturi = TAFacturi.GetData(CodProiect); 

然後我嘗試做這樣的事情:

if (dtfacturi[i].CANTITATE == null) 
    { 
    //do something 
    } 

這是給一個警告:

The result of the expression is always 'false' since a value of type 'double' is never equal to 'null' of type 'double? 

但是,當我運行我的代碼我收到以下異常:

StrongTypingException 
The value for column 'CANTITATE' in table 'XLSFacturi' is DBNull. 

我該如何解決這個問題?

回答

3

雖然在DB數據工作,需要檢查NULL值使用DBNull類,而不是.NET空。

+0

不幸的是我得到了與DBNull相同的結果,我想我會添加一個存儲過程,將數據庫中的零替換爲0。 – Iulian 2010-05-19 12:18:15

0

DBNullnull

檢查DBNull documentation on MSDN

你可以做個試驗:

if (DBNull.Value.Equals(dtfacturi[i].CANTITATE)) 
{ 
    //do something 
} 
1

數據庫NULL與null不同,您應該使用IsDBNull來檢查數據庫NULL。

編輯:混淆VB.Net與C#

DBNull.Value而不是VB的具體IsDBNull進行比較。

1

試試這個:

if (dtfacturi[i].CANTITATE == DBNull.Value) 
{ 
    //do something 
} 
1

類型的 '雙師型' 的值確實不能爲null;如果要導出爲雙精度數組,則需要在數據庫中包含兩列,一列包含數據,另一列包含有關數據是否有效的標誌。

這實際上是您的數據庫到數組適配器代碼中的一個錯誤;我無法找到任何XLSFacturiTableAdapter的谷歌匹配,所以我不確定誰喊。

0

當使用TypedDataSets,檢查是否coloumn爲null,這樣..

if (dtfacturi[i].IsCANTITATENull()) 
    { 
     //do something 
    } 

還要注意的是,C#空比數據庫空不同。 coloumn的類型是double,它是一個永遠不能爲null的值類型。爲了檢查您的coloumn值是否爲空,您需要將其與DBNull.Value進行比較。