簡體   English   中英

檢查SqlDataReader列是否為空值時出錯

[英]Error when checking if SqlDataReader column has null value

當我嘗試驗證SqlDataReader是否在列中返回空值的代碼時,與我一起進行項目工作的一個人不斷出現錯誤。 他運行以下代碼:

if (!DB_Conn.isConnected()) DB_Conn.Connect();
using (SqlDataReader dr = DB_Conn.QueryDB(query))
{
   if (dr.HasRows && !dr.IsDBNull(0))
   {
       maxID = dr.GetInt32(0);
   }
}

但是會收到一個錯誤消息,當!dr.IsDBNull(0)命令不存在任何數據時,將讀取無效的attemtp。

如果我運行相同的代碼,但查詢不同的表,則它可以工作。

此外,我同時運行兩個查詢,並且它們返回預期的null值。 查詢是:

SELECT MAX(ID) FROM Loan;
SELECT MAX(ID) FROM InternationalSwap;

我認為查詢不會對我們在一台計算機而不是另一台計算機上出現此錯誤的原因產生任何影響。

您需要在嘗試訪問任何列之前調用Read方法:

while (dr.Read())
{
    if (!dr.IsDBNull(0))
        maxID = dr.GetInt32(0);
}

但是...如果只需要一個值,則應該使用ExecuteScalar東西,而不是數據讀取器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM