当前位置:编程学习 > C#/ASP.NET >>

c#复杂sql无法取得数据

                public DataSet GetDataByPage_lwp(string StrSql, int PageSize, int PageIndex, out int TotalCount)
        {
            using (OracleConnection conn = new OracleConnection(connectionString))
            {

                using (OracleCommand cmd = new OracleCommand())
                {
                    cmd.CommandText = "DFKC_LWP_PAGE.sp_Page";//包名

                    cmd.CommandType = CommandType.StoredProcedure;

                    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);

                        cmd.Connection = conn;

                        conn.Open();

                        DataSet dataset = new DataSet();

                        ODAdapter.Fill(dataset);

                        TotalCount = int.Parse(cmd.Parameters["p_OutRecordCount"].Value.ToString());

                        return dataset;

                    }

                    catch (OracleException e)
                    {

                        throw (e);

                    }
                }

            }


大家好,上面的c#,存储过程,当sqlStr是简单的sql语句时, 上面的程序能通过存储过程获得数据库数据。如果sqlStr复杂就出现异常,运行到 DataSet dataset = new DataSet();
 ODAdapter.Fill(dataset);这一步时就出现异常,直接跳出断点了。请大侠指点一下小弟,多谢!

--------------------编程问答-------------------- dataset的操作你还没有定义当然无法进行了 --------------------编程问答-------------------- 下断点获取你的sql语句,在查询分析器里运行下看看语句错没错 --------------------编程问答-------------------- 应该是sql语句的问题吧 --------------------编程问答-------------------- 你的DataSet  作用是? --------------------编程问答--------------------   dataset的作用是填充数据库查询出来的sql语句。sql语句在oracle pl/sql里面没有问题。知识比较复杂 --------------------编程问答-------------------- 无 法 理 解 --------------------编程问答-------------------- cmd根本没有执行,你只是打开了conn,并没有调用cmd的任何方法 --------------------编程问答--------------------   OracleDataAdapter ODAdapter = new OracleDataAdapter(cmd);//这一句不就执行了cmd吗

--------------------编程问答-------------------- 是不是用了存储过程呀?应该是存储过程弄错了吧。
ODAdapter.Fill(dataset);这句话没问题啊,

还有conn.Open();这句话不要也可以的吧

还有报错你把报错信息贴出来,报错信息应该差不多告诉你是什么问题了。 --------------------编程问答--------------------    没有报错信息,执行到ODAdapter.Fill(dataset);就跳过去了,什么都没有 --------------------编程问答-------------------- 跟复杂sql没关系~~~~~~~ --------------------编程问答-------------------- 应该先打开数据库连接再执行 OracleDataAdapter ODAdapter = new OracleDataAdapter(cmd);吧? --------------------编程问答-------------------- SQL语句拿出来跑下,这是基本的调试方法额 --------------------编程问答-------------------- 你的sql有问题debug一下吧
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,