数据操作中的类
 public DataSet SearchHouse(string sqlprice, string tbName)
    {
        SqlParameter[] prams = {
  data.MakeInParam("@price",  SqlDbType.Money, 8, Price  ),
                                };
       return (data.RunProcReturn("select * from tb_house where" + sqlprice, prams,tbName));//执行查询命令文本,并返回数据集
    }在调用时
ds = houseoperate.SearchHouse(sqlprice,"tb_house");
  if (ds.Tables[0].Rows.Count > 0)
                {
                    dlPro.DataSource = ds;
                    dlPro.DataKeyField = "ID";
                    dlPro.DataBind();
                }sqlprice的值为price between 3000 and 5000
运行时说无法找到表0,就是ds中没有数据,但其他的相似的查询都可以请大家帮下忙,小弟实在不知道怎么找原因了,谢谢先

解决方案 »

  1.   

     if (ds!=null&&ds.Tables[0].Rows.Count > 0)
      {
      dlPro.DataSource = ds;
      dlPro.DataKeyField = "ID";
      dlPro.DataBind();
      }先这样判断一下。然后设置一个断点。到ds.Tables[0]这里看看
      

  2.   

    可以检查一下你的SQL,你的SQL应该有问题,即便是查找到0条数据ds.Tables.Count不能为0
      

  3.   

     dataset 是一个离线的数据集 他里面可以追加多个table  
      发生这种情况 一般 是表不存在 或者 是 没有查询出数据(后者居多)
       
          
      

  4.   

    between 3000 and 5000 没有符合这个条件的数据,ds是个空,ds.Tables[0]报错。if (ds = null)
                    {
                        MessageBox.Show("未找到符合条件的数据");
                        return; 
                    }
                    else
                    {
                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            dlPro.DataSource = ds;
                            dlPro.DataKeyField = "ID";
                            dlPro.DataBind();
                        }
                    }
      

  5.   

    加断点,看看 这个datatable是否存在
      

  6.   

    你的问题是sql执行问题从你的代码看出,sql的where后面是动态条件,这么这种就不能直接执行了
    要加上exec('select * from tb_house where 1=1 '+@price)
      

  7.   

    正解,没有补充了。if (ds!=null&&ds.Tables[0].Rows.Count > 0)
      {
      dlPro.DataSource = ds;
       }
      

  8.   

    检查data.RunProcReturn
    if (ds!=null && ds.Tables[0].Rows.Count > 0)
    {}
      

  9.   

    1楼正解,不过刚开始添加了ds!=null  后还是一样的不行,但后来设几个断点调试的时候居然突然可以了
    这个是什么原因?