未将对象引用设置到对象的实例 DataReader 错误解决

测试通过后的方法:

 List<String> list=new List<string> { };                           
               int index = 0;              
               while (reader.Read())
                {
                    if (!reader.IsDBNull(1))
                    { list.Add((reader.HasRows)? reader.GetInt32(1).ToString().Trim(): "")  ;   }
                    if (!reader.IsDBNull(2))
                    { list.Add((reader.HasRows) ? reader.GetInt32(2).ToString().Trim() : ""); }
                    else
                    { list.Add("空"); }
                    if (!reader.IsDBNull(4))
                    {
                        list.Add((reader.HasRows) ? reader.GetString(4).ToString().Trim() : "");
                    }                   
                    index++;
                }
                reader.Close();

注意事项:

  • 用于接收数据的list必须用new创建实例。
  • reader,while循环读取数据用reader.Read()。
  • 在读取数据之前必须检查是否为数据库null(DBNull),不能用“==”去判断,要用方法.IsDBNull(int 列)去检查。
  • 在用reader的GetT(int 列)之前,先检查有无数据:(reader.HasRows) ? xx赋值语句xx:没有的话的值。
  • 如为DBNull,可用else进行处理。 一定关闭reader。

检查注意事项后可以大大减少出现“未将对象引用设置到对象的实例”的错误几率。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值