C#判斷dataset數據集字段為NULL或為空


今天遇到一個奇怪問題,運行下邊的代碼,在一些特殊情況下會,報錯:異常信息:輸入字符串的格式不正確。

不知道什么原因dt.Rows[i]["SumPages"]字段為null時, dt.Rows[i]["SumPages"].ToString() == null的值還是false,因此會接着執行Convert.ToInt32(dt.Rows[i]["SumPages"].ToString())這句代碼,因此會報錯。

 

            DataSet ds = new DataSet();
            ds = DbHelperOra.Query(sb.ToString());
       int sumPages=0;
if (ds.Tables[0].Rows.Count > 0) { DataTable dt = ds.Tables[0]; for (int i = 0; i < dt.Rows.Count; i++) {              sumPages= dt.Rows[i]["SumPages"].ToString() == null ? 0 : Convert.ToInt32(dt.Rows[i]["SumPages"].ToString()); } }

 

 

 

 

也許該條記錄的dt.Rows[i]["SumPages"]字段並不為null,只是看着像null而已,所以才會出現這種情況。也許字段里是空的字符串。

將判斷字段是否為空的語句改成下邊的代碼,就不會再有問題

sumPages=string.IsNullOrEmpty(dt.Rows[i]["SumPages"].ToString()) ? 0 : Convert.ToInt32(dt.Rows[i]["SumPages"].ToString());

或者

sumPages = dt.Rows[i]["SumPages"] == DBNull.Value ? 0 : Convert.ToInt32(dt.Rows[i]["SumPages"].ToString());

再或者改查詢SQL語句

select nvl(sum(filed1),0) as SumPages from tableTest  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM