【问题标题】:Populate DataGrid using SqlDataReader with null使用带有 null 的 SqlDataReader 填充 DataGrid
【发布时间】:2017-06-02 09:36:58
【问题描述】:

我使用 SqlDataReader 在 while 循环中将数据库行写入 DataGrid(由于内存问题而不是绑定 SqlDataReader 或 DataTable),但在 SqlDataReader 时收到 null 异常命中一个空字段。我试过 ?? 运算符,它不起作用。除了检查 if-else 语句中的每个返回值,还有更简单或更优雅的方法吗?

while (sqlDataReader.Read()) 
{
   myDataGrid.Items.Add(new DataItem
   {
       Column01 = rdr.GetInt32(0) ?? "EMPTY",
   }); 
}

【问题讨论】:

    标签: c# wpf datagrid sqldatareader


    【解决方案1】:

    在列上调用IsDBNull 将允许您检查空值:

    Column01 = rdr.IsDBNull(0) ? "EMPTY" : rdr.GetInt32(0).ToString();
    

    【讨论】:

      【解决方案2】:

      这是一个解决方案,实现为可重用的方法扩展

      public static Int32 GetInt32(this IDataRecord dr, int index, Int32 @default)
      {
         object obj = dr[index];
         if (null == obj || obj is DBNull) return @default;
      
         return dr.GetInt32(index);
         //return Convert.ToInt32(obj);//alternatively
      }
      

      理想情况下,您可以为所有相关类型自行扩展方法。 @default 可用于指定在 NULL 情况下应该出现哪个值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 2011-08-02
        相关资源
        最近更新 更多