using (IDataReader reader = helper.CreateQuery(sql_getComments).ExecuteReader())
{
if(reader.read())
{
commentsList = BindObject.BindObjectToInstance(typeof(Comment), reader);
}
}
这样获取数据时会丢失第一条数据,而如果去掉
if(reader.read())这句后则可以正确获取数据。
请问,datareader在给Ilist赋值时为什么不能加入if(reader.read())?谢谢!
if(reader !=null)
{
commentsList = BindObject.BindObjectToInstance(typeof(Comment), reader);
}
SqlDataReader是单向只读的,Read ()之后当前记录就无法获取了,你可是使用HasRows属性判断SqlDataReader是否有数据,然后再执行绑定,这样就不会丢失第一条数据了
...
while(dr.Read())
{
sb.Append(dr["temp"].ToString());
}
这是我们通常reader用法,可见,每 dr.Read() 一次,对read的记录指向就会向后推一条.
那么 “if(reader.read() 判断一次,同样向后推一条记录,这样邦定里就少一条
我用很少用控件,不过我想 这个List控件可能是有对 reader记录的判断,你可以把为空的if去掉,直接邦试试,为空时报不报错,当然,判断一个是否为null也挺好