乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ASP.NET調(diào)用Oracle分頁存儲過程并結(jié)合ASPnetpager分頁控件 實現(xiàn)分頁功能

       昵稱10504424 2013-02-18

      之前用的是GridView自帶的分頁功能,那速度啊慢的真實不行 ,決定自定義分頁 Oracle庫里有5W多條數(shù)據(jù)

      AspnetPager做的還是不錯,拿過來用

      Oracle 分頁存儲過程:

      create or replace package JT_P_page is
      type type_cur is ref cursor;                    --定義游標變量用于返回記錄集
      procedure Pagination (Pindex in number,        --要顯示的頁數(shù)索引,從0開始
                             Psql in varchar2,        --產(chǎn)生分頁數(shù)據(jù)的查詢語句
                             Psize in number,         --每頁顯示記錄數(shù)
                             Pcount out number,       --返回的分頁數(shù)
                             Prowcount out number,    --返回的記錄數(shù)
                             v_cur out type_cur      --返回分頁數(shù)據(jù)的游標
                             );
      end JT_P_page;
      --定義包主體
      create or replace package body JT_P_page is
      procedure Pagination(Pindex in number, --要顯示的頁數(shù)索引,從0開始
                             Psql in varchar2, --產(chǎn)生分頁數(shù)據(jù)的查詢語句
                             Psize in number, --每頁顯示記錄數(shù)
                             Pcount out number, --返回的分頁數(shù)
                             Prowcount out number, --返回的記錄數(shù)
                             v_cur out type_cur --返回分頁數(shù)據(jù)的游標
                             ) AS
          v_sql VARCHAR2(1000);
          v_Pbegin number;
          v_Pend number;
      begin
          v_sql := 'select count(*) from (' || Psql || ')';
          execute immediate v_sql into Prowcount; --計算記錄總數(shù)
          Pcount := ceil(Prowcount / Psize); --計算分頁總數(shù)
          --顯示任意頁內(nèi)容
          v_Pend := Pindex * Psize + Psize;
          v_Pbegin := v_Pend - Psize + 1;    
          v_sql := 'select * from (' || Psql || ') where rn between ' || v_Pbegin || ' and ' || v_Pend;         
          open v_cur for v_sql;
      end Pagination;
      end JT_P_page;

      這個是在網(wǎng)上找的,還不錯 主要是根據(jù)偽列 rownum作為where查詢條件 進行帥選,關于rownum偽列可以查看

      http://www.cnblogs.com/chinhr/archive/2007/09/30/911685.html 寫的很透徹 ,通過這次做這個Oracle分頁算是對rownum有了初步的認識,實踐出真理 , 有了存儲過程截下來就是調(diào)用

      存儲過程有6個參數(shù) 前三個是輸入?yún)?shù),后三個是輸出參數(shù)

      Help.cs:

      public static DataTable ReturnDataTable(int index,string sql,int pageSize)
          {     
              DataTable dt = new DataTable();
              try
              {          
                  OracleParameter []param=new OracleParameter []{new OracleParameter("Pindex",OracleType.Number),new OracleParameter("Psql",OracleType.VarChar),new OracleParameter("Psize",OracleType.Number),new OracleParameter("Pcount",OracleType.Number),new OracleParameter("Prowcount",OracleType.Number),new OracleParameter("v_cur",OracleType.Cursor)};
                  param[0].Value = index;
                  param[1].Value = sql;
                  param[2].Value = pageSize;

                  param[0].Direction = ParameterDirection.Input;
                  param[1].Direction = ParameterDirection.Input;
                  param[2].Direction = ParameterDirection.Input;
                  param[3].Direction = ParameterDirection.Output;
                  param[4].Direction = ParameterDirection.Output;
                  param[5].Direction = ParameterDirection.Output;          

                  dt= OracleHelper.ReturnDataTable(OracleHelper.dbCon, CommandType.StoredProcedure, "JT_P_page.Pagination", param);
                  Help._rowCount = int.Parse(param[4].Value.ToString());
                
              }
              catch (OracleException on)
              {
                  throw on;              
              }      
              return dt;
          }

      注意一下再調(diào)用的時候 參數(shù)名必須和存儲過程中的參數(shù)保持一致 否則可能會報錯 例如:new OracleParameter("Pindex",OracleType.Number) 中的 Pindex 和存儲過程procedure Pagination (Pindex in number 中的一樣,Aspnetpage作為一個第三方控件,直接從網(wǎng)上下載后 在VS2005工具欄里把.dll導進去 就可以拿來用了 前臺頁面Update_Agent.aspx.cs里:

      protected void Page_Load(object sender, EventArgs e)
          {
              
              if (!IsPostBack)
              {
                  BindGridView(0, "union_view", _pageSize);         
                  AspNetPager1.RecordCount = (Help._rowCount >= 0) ? Help._rowCount : 0;          
              }
          }

      private void BindGridView(int index, string sql, int pageSize)
          {
              DataTable dt;
              if (sql != "")
              {
                  ViewState["IsProcedure"] = "yes";
                  dt = Help.ReturnDataTable(index, sql, pageSize);
              }
              else
              {
                  ViewState["IsProcedure"] = "no";
                  dt = Help.ReturnDataTableByCondition(dateinput.Value, dateinput2.Value, orderID.Value.Trim(), dgWay.SelectedValue, AspNetPager1.CurrentPageIndex - 1, AspNetPager1.PageSize);
              }
              iagentView.DataSource = dt;
              DataBind();
              AspNetPager1.RecordCount = (sql!="")?Help._rowCount:Help.ReturnRows(dateinput.Value, dateinput2.Value, orderID.Value.Trim(), dgWay.SelectedValue);
              AspNetPager1.PageSize = pageSize;
              AspNetPager1.CustomInfoHTML = "記錄總數(shù):<font color=/"blue/"><b>" + AspNetPager1.RecordCount.ToString() + "</b></font>";  
              AspNetPager1.CustomInfoHTML += " 總頁數(shù):<font color=/"blue/"><b>" + AspNetPager1.PageCount.ToString() + "</b></font>";  
              AspNetPager1.CustomInfoHTML += " 當前頁:<font color=/"red/"><b>" + AspNetPager1.CurrentPageIndex.ToString() + "</b></font>";  
          }  

         /// <summary>
          /// AspNetPager1   PageChanged事件
          /// </summary>
          /// <param name="sender"></param>
          /// <param name="e"></param>

      protected void AspNetPager1_PageChanged(object sender, EventArgs e)
          {
              if (ViewState["IsProcedure"] != null && ViewState["IsProcedure"].ToString() == "yes")
              BindGridView(AspNetPager1.CurrentPageIndex-1, "union_view", _pageSize);
              else
              BindGridView(AspNetPager1.CurrentPageIndex - 1, "", _pageSize);
                }

      Update_Agent.aspx 里 AspNetPager 的申明 以及一些屬性的設置 這個網(wǎng)上可以搜的倒

      <webdiyer:AspNetPager ID="AspNetPager1" CssClass="pages" CurrentPageButtonClass="cpb" runat="server" FirstPageText="首頁" LastPageText="尾頁" NextPageText="下一頁" PrevPageText="上一頁" AlwaysShow="true" PageIndexBoxType="DropDownList" OnPageChanged="AspNetPager1_PageChanged" ShowCustomInfoSection="left" NumericButtonTextFormatString="{0}" >
                  </webdiyer:AspNetPager>     

      我做了一下測試,用存儲過程分頁比原來GridView自帶的分頁效率提高了不止一倍 ,時間只有原來的一半不到

       

      本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/zkvistor/archive/2009/08/30/4497305.aspx

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多