请教大家关于SqlDataReader.Read的一些问题!

兰峰如月 2014-02-18 04:54:04
请教大家关于SqlDataReader.Read的一些问题!

大家看下下面的代码,在哪些情况下while里面是false的呢?
现在做的系统里面,有些数据在读的时候会读不进去,显示“读取最后一次签章信息失败,不存在记录

msdn说:返回值
类型:System.Boolean
如果存在多个行,则为 true;否则为 false

string sQL = " select top 1 VisaInfo,MaintainDate,FixInfo from VisaInfo where LicenceNo=@LicenceNo and licenceColor=@LicenceColor order by visaInfo desc ";
SqlParameter[] sqlParams = new SqlParameter[]
{
new SqlParameter("@LicenceNo", SqlDbType.VarChar, 20),
new SqlParameter("@LicenceColor", SqlDbType.VarChar, 20)
};
sqlParams[0].Value = licenceNo;
sqlParams[1].Value = licenceColor;
log.Info("获取最后签章信息,select top 1 VisaInfo,MaintainDate,FixInfo from VisaInfo where LicenceNo=" + sqlParams[0].Value + "and licenceColor=" + sqlParams[1].Value + " order by visaInfo desc");
DBClass class2 = new DBClass("ConnStr");
class2.ReadData(sQL, sqlParams);
while (class2.MyReader.Read())
{
MaintainDate = Convert.ToDateTime(class2.MyReader["MaintainDate"]).ToShortDateString();
FixInfo = class2.MyReader["FixInfo"].ToString();
VisaInfo = class2.MyReader["VisaInfo"].ToString();
flag = true;
}
class2.MyReader.Dispose();
class2.MyReader.Close();
class2.Conn.Dispose();
class2.Conn.Close();

if (!flag)
{
AlertError = "读取最后一次签章信息失败,不存在记录";
}

...全文
253 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
兰峰如月 2014-02-19
  • 打赏
  • 举报
回复
没人吗?
兰峰如月 2014-02-19
  • 打赏
  • 举报
回复
引用 10 楼 liuchaolin 的回复:
[quote=引用 6 楼 u012238529 的回复:] [quote=引用 4 楼 liuchaolin 的回复:] DBClass class2 = new DBClass("ConnStr"); 你这个ConnStr很让人质疑
这里是没有问题的![/quote] 你在初使化是,是传SQL链接字符串,还是给config的标签名呢?[/quote] 貌似问题不是出在这吧
md5e 2014-02-19
  • 打赏
  • 举报
回复
引用 6 楼 u012238529 的回复:
[quote=引用 4 楼 liuchaolin 的回复:] DBClass class2 = new DBClass("ConnStr"); 你这个ConnStr很让人质疑
这里是没有问题的![/quote] 你在初使化是,是传SQL链接字符串,还是给config的标签名呢?
兰峰如月 2014-02-19
  • 打赏
  • 举报
回复
引用 7 楼 feiyun0112 的回复:
你写log,看(!flag)试对应的sql
版主,我没有出现那种bug下的数据,我这个不是发布的版本,所以只能凭脑子想怎么会出现没有读循环里面的情况,只是实在没有看出来哪里有错误,所以来请教大家!一般什么情况才会导致这些问题!
兰峰如月 2014-02-19
  • 打赏
  • 举报
回复
没有人帮忙吗?分少可以加哦!
feiyun0112 2014-02-19
  • 打赏
  • 举报
回复
你写log,看(!flag)试对应的sql
兰峰如月 2014-02-19
  • 打赏
  • 举报
回复
引用 4 楼 liuchaolin 的回复:
DBClass class2 = new DBClass("ConnStr"); 你这个ConnStr很让人质疑
这里是没有问题的!
兰峰如月 2014-02-19
  • 打赏
  • 举报
回复
引用 3 楼 feiyun0112 的回复:
你跟踪看读不出来时对应的sql,到查询分析器执行看 select top 1 VisaInfo,MaintainDate,FixInfo from VisaInfo where LicenceNo=" + sqlParams[0].Value + "and licenceColor=" + sqlParams[1].Value + " order by visaInfo desc ***************************************************************************** 签名档: http://feiyun0112.cnblogs.com/
版主,关键是我现在没有读不出来的数据,但是上头说出现了这样的情况,让我分析改正为什么数据在前台都能显示,却在后台获取时出现错误。所以我想应该是没有进入while循环里,一般上面情况会进不了循环呢?
md5e 2014-02-18
  • 打赏
  • 举报
回复
DBClass class2 = new DBClass("ConnStr"); 你这个ConnStr很让人质疑
feiyun0112 2014-02-18
  • 打赏
  • 举报
回复
你跟踪看读不出来时对应的sql,到查询分析器执行看
select top 1 VisaInfo,MaintainDate,FixInfo from VisaInfo where LicenceNo=" + sqlParams[0].Value + "and licenceColor=" + sqlParams[1].Value + " order by visaInfo desc

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
兰峰如月 2014-02-18
  • 打赏
  • 举报
回复
引用 1 楼 liuqian4243 的回复:
最好,先判断对象是否为null再调用对象的属性和方法信息
谢谢你的回答,关键是不为空,因为数据在前台都可以显示的,为什么还会读不出来呢?
Ny-6000 2014-02-18
  • 打赏
  • 举报
回复
最好,先判断对象是否为null再调用对象的属性和方法信息

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧