碰到一个怪怪的问题

foxd 2012-07-03 03:07:11
我在c#写代码时碰到一个怪现象,数据库是Access2007的,执行后发现其中的dt.Rows.Count总是为0(表明SQL语句查询不到记录),因此大括号之内的那两句总不执行,可是我若是在DataTable dt = new DataTable();这一句设置断点,中断后一条一条地执行下去,则dt.Rows.Count就不为0。

private void dydj(string serialNo)
{
DataTable dt = new DataTable();
string sql = "Select Weight_FirstDateTime, Weight_DateTime from tb_Weight";
sql += " where Weight_BDH = '" + serialNo + "' and Weight_Times = 2 and Weight_CheHao = '" + this.cbbTruckNo.Text.Trim() + "'";
dt = dbc.getOleds(sql, "tb_Weight").Tables[0];
if (dt.Rows.Count != 0) //这一句老是结果不正确
{
Report.ParameterByName("para_MZDateTime").Value = Convert.ToString(dt.Rows[0][0]);
Report.ParameterByName("para_PZDateTime").Value = Convert.ToString(dt.Rows[0][1]);
}
}

不知道为什么会是这样?谢谢!
...全文
224 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinnsyuutou 2012-07-03
  • 打赏
  • 举报
回复
你该用try catch捕获下异常看看
foxd 2012-07-03
  • 打赏
  • 举报
回复
找到毛病了,原来是Access的公共类没有写好,修改后搞定了,谢谢各位指教!
foxd 2012-07-03
  • 打赏
  • 举报
回复
getOleds(..,..)这个方法你返回的就是DataSet,这个不会有问题。
同样的代码我用SQL Server 2000数据库就OK,一点问题都没有,唯独Access2007数据库不行。我在想,Access2007数据库在两个SQL指令之间是否需要加一个Flush()之类的写盘动作才有效?
foxd 2012-07-03
  • 打赏
  • 举报
回复
我试了一下,同样代码若使用SQL Server 2000数据库的话就没事,唯独Access2007数据库出问题。不知Access数据库的两个SQL指令之间是否需要加一个Flush()之类的写盘动作才有效?
tudiy 2012-07-03
  • 打赏
  • 举报
回复
dt = dbc.getOleds(sql, "tb_Weight").Tables[0];
肯定这句错了啊。
getOleds(..,..)这个方法你返回的是DataSet吗?
foxd 2012-07-03
  • 打赏
  • 举报
回复
反复验证都是如此。
foxd 2012-07-03
  • 打赏
  • 举报
回复
Tables[0] 表示头一个表
xiaohu_748 2012-07-03
  • 打赏
  • 举报
回复
dt = dbc.getOleds(sql, "tb_Weight").Tables[0];

Tables[0] 表示什么??
孟子E章 2012-07-03
  • 打赏
  • 举报
回复
感觉是dbc.getOleds里面的问题

110,535

社区成员

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

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

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