你直接返回ds不就行了吗?
不然你调用的地方要ds这么办呢?

解决方案 »

  1.   

    SQL语句确认没出错。。不知道 whoo529() 。你说的是什么意思?
      

  2.   

    测试下你的sql看执行是否正确
      

  3.   

    回huzech   一个是dataset  ,一个是 datatable 类型,肯定不能进行转换啊
      

  4.   

    sql 语句在调试的时候,检查确认没有错误
      

  5.   

    调试看看
    ds.Tables[0] 
    到底是什么??
      

  6.   

    datatable dt=ds.tables[0];
    return dt;
      

  7.   

    回 hdt  直接提示 “找不到表 0”
      

  8.   

    b.[user_id]" + strcond
    俩ID和你想的一样么?
      

  9.   

    看看ds.Tables.Count是多少,如果为0,说明没有取到数据
      

  10.   

    回 fengniao996_163 SQL语句直接在查询分析器里执行。能正常返回数据。。
      

  11.   

    public DataSet Getmessagelist(string strcond)  //实现查询
            {
                DataSet ds = new DataSet();
                string strsql = "select a.*,b.* from book_message  a inner join book_user b on a.[user_id]=b.[user_id]" + strcond;
                Database db = DatabaseFactory.CreateDatabase();
                DbCommand cmd = db.GetSqlStringCommand(strsql);
                try
                {
                    ds = db.ExecuteDataSet(cmd);
                }
                catch (Exception ex)
                {
                    ds = null;
                    this.Errmsg = ex.Message.ToString();
                }            return ds;   ///这里提示出错
            }
      

  12.   

    看看ds.Tables.Count是多少,如果为0,说明没有取到数据
    -------
    同意!
    还有
       ds = db.ExecuteDataSet(cmd);这个  db.ExecuteDataSet返回的是什么呢;
      

  13.   

    ds.Tables[0] 索引为0的表没找到....
    只能证明查询数据库没有结果集.....把SQL语句改下放到SQL查询分析器下运行...看看有问题没....
    如果SQL语句没问题...那就只能是你的查询数据库代码问题了.....
      

  14.   

    try
                {
                    ds = db.ExecuteDataSet(cmd);
                }
                catch (Exception ex)
                {
                    this.Errmsg = ex.Message.ToString();
                }代码跟踪一下上面的代码是不是异常了
      

  15.   

    调试显示ds = db.ExecuteDataSet(cmd);
    ds的值都为 null
    sql语句显示正常。。都不知道这是什么原因了
      

  16.   

    调试显示ds = db.ExecuteDataSet(cmd);
    ds的值都为 null
    sql语句显示正常。。都不知道这是什么原因了
    ---------------------------------------------------------只有去看ExecuteDataSet方法了
      

  17.   

    string strsql = "select a.*,b.* from book_message  a inner join book_user b on a.[user_id]=b.[user_id]" + strcond;
    strcond?是什么东西,贴出来看看
      

  18.   

    strcond  是空值
    判断输入查询条件或是不输入查询条件的SQL语句
      

  19.   

    yan53125。。谢谢你的提议,我现在去看看
      

  20.   

    ExecuteDataSet()晕我也写了个这个方法
      

  21.   

    ExecuteDataSet()这个方法是什么?里面的东西是怎么执行的?执行跟进去看看啊。
      

  22.   

    public DataSet Getmessagelist(string strcond)  //实现查询
            {
                
                string strsql = "select a.*,b.* from book_message  a inner join book_user b on a.[user_id]=b.[user_id]" + strcond;
                Database db = DatabaseFactory.CreateDatabase();
                DbCommand cmd = db.GetSqlStringCommand(strsql);
                DataSet ds = null;
                try
                {
                    ds = db.ExecuteDataSet(cmd);
                }
                catch 
                {
                    ds = null;
                    
                }            return ds;   
            }看看这样行不行啊!!!!
      

  23.   

    if(ds.Tables.Count>0)
    return ds.Tables[0];   ///这里提示出错
      

  24.   

    ds = db.ExecuteDataSet(cmd);这个方法有可能返回一个null值(如果查询结果集为空的话)
    所以应该判断一下ds.Tables.Count的值再返回结果
      

  25.   

    回chengjun_java:也还是不行那个ds的值一直都为null
      

  26.   

    a inner join book_user b 之间是否少了一个"'"?
      

  27.   

    lslcyt  除了SQL查询导致结果集为空以外,请问还有其它原因导致结果集为空吗?
      

  28.   

    try
                {
                    ds = db.ExecuteDataSet(cmd);
                }
                catch (Exception ex)
                {
                    this.Errmsg = ex.Message.ToString();
                }建议去掉   try catch 个人估计的查询有异常发生
      

  29.   

    if(ds!=null && ds.Tables.Count>0)
    {
      return ds.Tables[0];   
    }
      

  30.   

    我也认为直接用fill填充好返回
      

  31.   

    总上:肯定是ExecuteDataSet 中出了问题~~~
      

  32.   

    企业库的类库,你连的是sqlserver
    要强制转换为sql类型的连接dbdatabase要转换sqldatabase
      

  33.   

    给分,我昨天回去时,想到的,肯定是sql出错!
    string strsql = "select a.*,b.* from book_message  a inner join book_user b on a.[user_id]=b.[user_id]" + strcond;
    这句sql strcond 应该是string变量吧?
    我以前也碰到这个问题.
    "" 里加个空格!这样写:string strsql = "select a.*,b.* from book_message  a inner join book_user b on a.[user_id]=b.[user_id]  " + strcond;
      

  34.   

    在设置一下断点:
     string strsql = "select a.*,b.* from book_message  a inner join book_user b on a.[user_id]=b.[user_id]" + strcond;
    在执行这条语句后,将strsql变量的值全部复制到查询分析器中运行,如果它能等到结果,说明你返回记录集的方法有问题.
      

  35.   

    elvanic()
    除了SQL查询导致结果集为空以外,请问还有其它原因导致结果集为空吗?有可能在你引用的方法里面,判断了某个条件,条件不满足则直接return null,所以你得到的DataSet是null
    其他的,好像没有了……
      

  36.   

    打个断点看看 catch到什么错误了
      

  37.   

    sql错误 语句到查询分析器里面运行一下
      

  38.   

    Public Function GetDataReader(ByVal sql As String) As SqlDataReader
            Try
                Dim Conn As SqlConnection
                Conn = New SqlConnection(strSqlConn)
                Dim SqlCmd As SqlCommand = New SqlCommand(sql, Conn)
                Conn.Open()
                Dim sqlDr As SqlDataReader = SqlCmd.ExecuteReader(CommandBehavior.CloseConnection)
                Return sqlDr
            Catch ex As Exception
                Throw (ex)
            End Try
        End Function
    ----
        Public Function GetSqlDataSource(ByVal sql As String) As SqlDataSource
            Try
                Dim SqlDs As SqlDataSource
                SqlDs = New SqlDataSource
                SqlDs.ConnectionString = strSqlConn
                SqlDs.SelectCommand = sql
                Return SqlDs
            Catch ex As Exception        End Try
        End Function
    ------
        Public Function GetDataSet(ByVal sql As String) As DataSet
            Try
                Dim Conn As SqlConnection
                Conn = New SqlConnection(strSqlConn)
                Dim sqlDa As SqlDataAdapter = New SqlDataAdapter(Sql, Conn)
                Dim ds As DataSet = New DataSet
                Conn.Open()
                sqlDa.Fill(ds, "a")
                Conn.Close()
                sqlDa.Dispose()
                Conn.Dispose()
                GetDataSet = ds
            Catch ex As Exception
                Throw (ex)
            End Try
        End Function
      

  39.   

    你按下面来做就会有结果:
         DataTable Dt=db.ExecuteDataSet(cmd).tables[0]; 
      

  40.   

    将返回语句改为return ds["数据库你表明"];这样应该是可以的
      

  41.   

    SQL语句能在查询分析器查出结果。。但是 ds.Tables[0];       总是提示找不到表   0/
    那有可能连接数据库出错...
    没有加connection吧,参数...