首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请教:为何调用Oracle过程返回结果集后用GridView显示不出来数据

2011-12-31 
请问:为何调用Oracle过程返回结果集后用GridView显示不出来数据按网上说的做的一例子:C#部分:usingSystem

请问:为何调用Oracle过程返回结果集后用GridView显示不出来数据
按网上说的做的一例子:
C#部分:
using   System;
using   System.Data;
using   System.Configuration;
using   System.Collections;
using   System.Web;
using   System.Web.Security;
using   System.Web.UI;
using   System.Web.UI.WebControls;
using   System.Web.UI.WebControls.WebParts;
using   System.Web.UI.HtmlControls;
using   System.Data.OracleClient;

public   partial   class   CallProcedure   :   System.Web.UI.Page
{
        public   string   bmsOracleUser   =   "test_user ";
        public   string   bmsOracleConnectionString   =   "Data   Source=test;user   id=test_user;password=test_user ";

        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                if   (!IsPostBack)
                {
                        DataSet   ds   =   new   DataSet();
                        ds   =   Bill_Point_No(44);
                        if   (ds.Tables.Count   >   0)
                        {
                                GridView1.DataSource   =   ds;
                                GridView1.DataBind();
                        }
                        else
                        {
                                Response.Write( "Unable   to   connect   to   the   database ");
                        }
                }
        }

        public   DataSet   Bill_Point_No(int   CUSTOMER_ID)
        {
                DataSet   dataset   =   new   DataSet();
                Hashtable   HT   =   new   Hashtable();
                HT.Add( "P_CUSTOMER_ID ",   CUSTOMER_ID);
                if   (RunProcedure( "Re_CURSOR ",   OracleType.Cursor,   ref   dataset,   HT,   bmsOracleUser   +   ".YY_PKG_BILL_POINT_NO.BILL_POINT_NO ",   bmsOracleConnectionString))
                {
                        ;
                }
                else


                {
                        dataset   =   null;
                }
                return   dataset;
        }

        public   bool   RunProcedure(string   ReturnParameter,   OracleType   ParamType,   ref   DataSet   Dataset,   Hashtable   HT,   string   ProcedureName,   string   OracleConnection)
        {
                OracleConnection   dsConnection   =   new   OracleConnection(OracleConnection);
                OracleCommand   daCommand   =   new   OracleCommand(ProcedureName,   dsConnection);
                daCommand.CommandType   =   CommandType.StoredProcedure;
                IDictionaryEnumerator   Enumerator;
                Enumerator   =   HT.GetEnumerator();
                object   Value   =   null;
                OracleParameter   OracleParam;
                OracleParam   =   daCommand.Parameters.Add(new   OracleParameter(ReturnParameter,   ParamType));
                OracleParam.Direction   =   ParameterDirection.Output;
                while(Enumerator.MoveNext())
                {
                        Value   =   Enumerator.Value;
                        OracleParam   =   daCommand.Parameters.Add(new   OracleParameter(Enumerator.Key.ToString(),Value));
                }
                OracleDataAdapter   ODAdapter   =   new   OracleDataAdapter(daCommand);
                try
                {
                        ODAdapter.Fill(Dataset);
                        return   true;
                }
                catch(Exception   e)
                {
                        e.ToString();
                        return   false;
                }
                finally
                {
                        HT.Clear();
                        daCommand.Parameters.Clear();


                        dsConnection.Close();
                }
        }
}

oracle部分:
1.表结构
CREATE   TABLE   BILL_POINTS
(
    POINTS_ID             NUMBER(10)                                           NOT   NULL,
    CUSTOMER_ID         NUMBER(10)                                           NOT   NULL,
    BILL_POINT_NO     NUMBER(2)                                             DEFAULT   1                                           NOT   NULL
)

CREATE   UNIQUE   INDEX   PK_BILL_POINTS   ON   BILL_POINTS
(POINTS_ID);


ALTER   TABLE   BILL_POINTS   ADD   (
    CONSTRAINT   PK_BILL_POINTS
  PRIMARY   KEY
  (POINTS_ID));

2.创建包:
CREATE   OR   REPLACE   PACKAGE   yy_pkg_bill_point_no         /*取得用户的所有计费点序号*/
IS
      TYPE   t_cursor   IS   REF   CURSOR;

      PROCEDURE   bill_point_no   (
            p_customer_id                   bill_points.customer_id%TYPE,
            re_cursor               OUT       t_cursor
      );
END;
/
CREATE   OR   REPLACE   PACKAGE   BODY   yy_pkg_bill_point_no
/*取得用户的所有计费电序号*/
IS
      PROCEDURE   bill_point_no   (
            p_customer_id                   bill_points.customer_id%TYPE,
            re_cursor               OUT       t_cursor
      )
      IS
            v_cursor       t_cursor;
    SQL_ERROR     VARCHAR2(100);
      BEGIN
            OPEN   v_cursor   FOR
                  SELECT   bill_point_no
                      FROM   bill_points
                    WHERE   customer_id   =   p_customer_id;

            re_cursor   :=   v_cursor;
      EXCEPTION
            WHEN   OTHERS
            NULL;
      END;
END;
/



[解决办法]
http://www.chinamacro.com/blog/visit_detail.aspx?blogID=120

热点排行