测试通过后的方法:
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。
检查注意事项后可以大大减少出现“未将对象引用设置到对象的实例”的错误几率。