OleDbDataReader的Read返回值怎么乱七八糟的,不会是.net的bug吧,麻烦各位指点一下(C#)

kuangxiang007 2003-10-18 07:56:14
用Access数据库,字段类型是String时,
select max(dept_name) from dept_data where left(dept_name,3)='abc'
由于没有满足where left(dept_name,3)='abc'所以DataReader没有任何记录,结果执行Read()居然也返回True,但用GetString(0)时,却又出错,有记录时就可以用GetString(0)返回正确结果。当字段类型是integer时就奇怪了,
select max(dept_num) from dept_data
Table的记录是空的时Read()返回False,Table记录不为空时max()有正确的数字结果时Read()也返回False,更不用说GetInt64(0)不可能执行了
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuangxiang007 2003-10-18
  • 打赏
  • 举报
回复
还是思归大哥厉害,一下就解决了
xxdneu 2003-10-18
  • 打赏
  • 举报
回复
用了聚合函数max,就有肯定有记录,只是返回值是Convert.DbNull,所以GetString会出错
Nicholasqpl 2003-10-18
  • 打赏
  • 举报
回复
代码贴出来
up
saucer 2003-10-18
  • 打赏
  • 举报
回复
look at the datatype for the return value (could be Decimal) or do a specific conversion

DataReader.Read();
Response.Write(DataReader[0] == DBNull.Value);
Response.Write(DataReader[0].GetType().Name);
Response.Write(Convert.ToDecimal(DataReader[0]));
Response.Write(Convert.ToDecimal(DataReader[0].ToString()));

rgbcn 2003-10-18
  • 打赏
  • 举报
回复
跟踪一下,看看,会不会出什么错。
Inyoureyes 2003-10-18
  • 打赏
  • 举报
回复
代码贴出来看看,是不是没有重新生成DataReader,看着都像用的以前的结果

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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