日期:2014-05-18  浏览次数:20451 次

ds.Tables[0].Rows.Count 能查到0表 但count=0 sql语句没问题
string sql = "select * from View_TaskCourse where task_id=11";


  DataSet ds = TaskSystem.DAL.DbHelper.Query(sql);

if (ds!=null&& ds.Tables[0].Rows.Count > 0)//这句一直不满足

------解决方案--------------------
先看看ds是否为空。
1,if(ds == null) 这是判断内存中的数据集是否为空,说明DATASET为空,行和列都不存在!!
2,if(ds.Tables[0].Count == 0) 这应该是在内存中存在一个DATASET,但是,数据集中不存在表!!
3,if(ds.Tables[0].Count == 1 && ds.Tables[0].Rows.Count == 0) 说明存在表table,但是,表内没有数据!
------解决方案--------------------
怎么又发一遍?
ds.Tables["ds"].Rows.Count
------解决方案--------------------
1 你的SQL语句能不能筛选出数据来
2 看你的TaskSystem.DAL.DbHelper.Query 这个方法的连接字符串等信息是否正确,DataSet里数据为NULL或是Count为0的原因也可能跟他有关系

个人建议把判断分开写,这样才清楚到底是ds里是空的还是筛选出来的结果就是NULL
------解决方案--------------------
分开比较好看点
先判断null
再判断有无数据
------解决方案--------------------
if (ds !=null && ds.Tables[0].Rows.Count > 0)
是不是你那个&&挨的太紧 了,我平时也这样用,,没看出那里有错误