大家好,最近遇到一个c#中调用oracle分页的问题,断点后发现一处没有跳进去。具体如下,新手   
    public  DataSet GetDataByPage_lwp(string StrSql, int PageSize, int PageIndex, out int TotalCount)
        {
            
                    OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString.ToString());
                   
                    OracleCommand cmd = new OracleCommand();
              
                    // OracleConnection conn = new OracleConnection(connectionString);
                    // OracleCommand cmd = new OracleCommand();
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.StoredProcedure;
                    conn.Open();                    cmd.CommandText = "DFKC_LWP_PAGE";//包名                    cmd.Parameters.Add("p_PageSize", OracleDbType.Int32, 10);//分页大小
                    cmd.Parameters.Add("p_PageNo", OracleDbType.Int32, 10);//页码
                    cmd.Parameters.Add("p_SqlSelect", OracleDbType.Varchar2, 3000);//sql语句
                    cmd.Parameters.Add("p_OutRecordCount", OracleDbType.Int32, 10);//返回得记录总数
                    cmd.Parameters.Add("DataSet", OracleDbType.RefCursor);//返回得记录集                    cmd.Parameters["p_PageSize"].Value = PageSize;
                    cmd.Parameters["p_PageNo"].Value = PageIndex;
                    cmd.Parameters["p_SqlSelect"].Value = StrSql;
                    cmd.Parameters["p_OutRecordCount"].Direction = ParameterDirection.Output;
                    cmd.Parameters["DataSet"].Direction = ParameterDirection.Output;                    try
                    {
                   
                        OracleDataAdapter ODAdapter = new OracleDataAdapter(cmd);
                        DataSet dataset = new DataSet();
                        ODAdapter.Fill(dataset);
                        TotalCount = int.Parse(cmd.Parameters["p_OutRecordCount"].Value.ToString());
                        return dataset;                    }                    catch (OracleException e)
                    {
                        //throw(e);
                    }                    TotalCount = 0;
                    return null;
                }

解决方案 »

  1.   

    运行到这一步:ODAdapter.Fill(dataset);
    就直接跳出来了, return null.其中sql语句和存储过程都没有错误(以前一直用的存储过程),不知道哪位大侠帮忙解释一下原因。新手谢谢!
      

  2.   

    ODAdapter.Fill(dataset);将数据填充到dataset , 语法没有问题应该是你的cmd的参数给定错误了?仔细检查下sql看看。
      

  3.   

    数据库打开早了,cmd.Connection = conn;conn.Open();此时,参数还没有传进去呢……把这两句扔后面去!
      

  4.   

    sql是否有返回数据?如果有应该就是参数错误。