首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# DataRow["ID"] 與 0 比較:類型轉換與空值處理最佳實踐

     編輯:程式設計綜合問答

問題現象

數據庫列類型為 int,row["ID"] 返回 object,直接與 0 比較編譯報錯或運行異常。

正確寫法

// 1. 安全轉換後比較(推薦)
if (row["ID"] != DBNull.Value && Convert.ToInt32(row["ID"]) == 0) { ... }

// 2. 模式匹配 (C# 7+)
if (row["ID"] is int id && id == 0) { ... }

// 3. 字符串比較(不推薦,有文化差異風險)
if (row["ID"].ToString() == "0") { ... }

空值 vs 空字符串

  • DBNull.Value:數據庫 NULL,row["ID"] == DBNull.Value 為 true。
  • 0:實際存儲值 0,非空。
  • 未賦值:若列允許 NULL 且未插入,讀取為 DBNull;若有默認值 0,則為 0。

擴展方法封裝

public static class DataRowExtensions {
    public static int GetInt(this DataRow row, string col, int defaultValue = 0) {
        var val = row[col];
        return val == DBNull.Value ? defaultValue : Convert.ToInt32(val);
    }
}

// 使用
if (row.GetInt("ID") == 0) { ... }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved