999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Web環境的數據訪問技術優化研究

2010-05-13 08:46:00張志強
現代電子技術 2009年12期
關鍵詞:優化方案

張志強

摘 要:在Web應用軟件中,需要利用ADO.NET訪問數據庫中的數據。常規的數據訪問技術因訪問的數據量較大而需消耗大量的內存空間;同時網絡中的傳輸數據也會因數據量大而占用過多的帶寬,從而使軟件的整體性能降低。為提高軟件性能,對常規的數據訪問技術進行優化研究,提出并設計按頁為單位訪問數據的優化方案。因該優化方案每次訪問的數據量較小,從而有效地解決了上述問題,在實際應用中有很大的意義。

關鍵詞:Web應用軟件;ADO.NET;數據訪問技術;優化方案

中圖分類號:TP393.09文獻標識碼:A

文章編號:1004-373X(2009)12-039-03

Optimization Research of Data Access Technology Based on Web Environment

ZHANG Zhiqiang

(College of Information Science and Technology,Chengdu University,Chengdu,610106,China)

Abstract:In Web applications,it is necessary to access database by using ADO.NET.The conventional data access technology needs to consume a large amount of memory space,because in accessing,a large amount of data is needed.At the same time,in the network,too much bandwidth can be taken up if large amounts of data are transformed,so that the software′s overall performance is lowered.To enhance the performance of software,the paper carries out an optimization research on the conventional data access technology and designs an optimization program according to the data access which takes page as the unit.As the optimization program for each access needs only a small amount of data,the above problems are effectively solved,thus the program can be expected to play an important role in practice.

Keywords:Web application software;ADO.NET;data access technology;optimization program

0 引 言

在使用ASP.NET開發Web應用軟件的過程中,前臺客戶端經常需要從后臺數據庫中訪問數據,并在客戶端顯示與維護數據。常規的數據訪問操作是利用ADO.NET從后臺數據庫中訪問數據,填充到數據集(DataSet)中的數據表(DataTable)里,并將DataTable中的數據綁定到控件(GridView)中(實際就是在網絡中傳輸數據)。 當多個客戶端從后臺數據庫中訪問的數據量非常大時,會使DataTable中的數據量很大,在服務器端和客戶端將消耗大量的內存空間存放這些數據;同時當大量的數據在網絡中傳輸時也會占用過多的網絡帶寬,從而降低了整個應用軟件的性能。為了解決上述問題,需要優化常規的數據訪問技術,減少訪問的數據量,從而提高應用軟件的整體性能。

1 數據訪問機制

從后臺數據庫中訪問數據是利用ADO.NET數據庫訪問接口技術實現數據的讀寫。ADO.NET的前身是ADO(ActiveX Data Objects),它是Microsoft.NETFramework的主要數據庫訪問技術,為用戶建立Web應用軟件提供了統一、一致的數據庫接口。在Visual Studio.NET開發環境下,利用該技術,采用C#開發語言實現基于Web環境的數據庫訪問操作。ADO.NET 是為基于消息的 Web 應用軟件而設計的,通過支持對數據的松耦合訪問,可減少與數據庫的活動連接數目(即減少了多個用戶爭用數據庫服務器上的有限資源的可能性),從而實現最大程度的數據共享。ADO.NET 還通過對分布式應用程序的基本對象DataSet,支持基于 XML 的持久性和傳輸格式,以實現最大程度的數據共享。DataSet是一種關系數據結構,使用 XML 進行訪問、寫入或序列化。ADO.NET中的DataSet使得生成要求應用層與多個 Web 站點之間進行松耦合數據交換的應用軟件變得很方便。

ADO.NET提供兩種數據訪問模式;一種為連接模式(Connected),與原來的ADO相兼容;另一種為非連接模式(Disconnected),這是ADO.NET中所提供的新技術。對于非連接模式,有許多優點,可以有效地減少數據庫的連接數,降低為維護數據庫的連接而帶來的開銷,從而可以提高軟件的性能和規模。因此很多數據庫的訪問操作都采用非連接模式來完成,這也是常規數據訪問技術所采取的方式。

非連接模式的數據訪問機制主要是從后臺數據庫中訪問數據,并填充到DataSet中的DataTable對象里。然后將DataTable對象中的數據綁定到客戶端界面的數據表示控件上進行數據顯示與維護。常用的數據表示控件有GridView控件、DataList控件等。ADO.NET非連接模式下數據訪問操作的應用結構如圖1所示。

圖1 非連接模式的數據訪問機制

2 常規的數據訪問技術

如果后臺數據庫系統是SQL Server 2000或SQL Server 2005,常規數據訪問技術的實現是通過SqlDataAdapter對象執行SQL語句來訪問數據庫中的數據,并填充到DataSet中的DataTable里。最后將DataTable中的數據綁定到GridView表中顯示與維護。實現的代碼如下:

SqlConnection con = new SqlConnection("Data Source=zzq;Initial Catalog= keyanIN;Persist Security Info=True;User ID=sa;Password=123;Pooling=true");

//建立數據庫連接對象,數據庫為SQL Server 2005,User ID為設置登錄數據庫的用戶名,

//Password為登錄數據庫的密碼,pooling=true表示打開連接池。

string s = "select * from stu";//執行SQL語句訪問數據

SqlDataAdapter da = new SqlDataAdapter(s,con);

DataSet ds = new DataSet( );//建立數據集對象

da.Fill(ds,"student"); //填充數據到數據表student中

GridView1.DataSource = ds.Tables["student"].DefaultView;

GridView1.DataBind( );//將數據表student的數據綁定到GridView1控件

為了保證連接字符串的安全性,在實際應用中連接字符串不能出現在網頁程序中,其在Web.config文件中設置;然后利用代碼完成連接字符串的讀取,并建立SqlConnection連接對象。在Web.config文件中設置連接字符串的方式如下(conn為連接字符串名):

讀取連接字符串并建立連接對象的方式如下:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);

當一頁無法顯示完數據時,需要考慮分頁技術來完成多頁的數據顯示,采用的方法很多,例如:利用GridView控件的自動分頁技術完成分頁操作。以這種常規技術訪問數據時,當訪問的數據量很大時,DataTable中的數據會很多,需要更多的內存空間來存儲數據;將DataTable中的數據綁定到控件中顯示時,因傳輸大量數據而占用更多的網絡帶寬,從而使系統的整體性能降低。要改變這種狀況,采用優化的數據訪問技術,降低每次從數據庫中訪問的數據量,從而可有效地降低內存空間的消耗和所占網絡的帶寬。

3 優化的數據訪問技術

優化訪問技術的主要目的是降低從數據庫中訪問的數據量。按頁為單位訪問數據庫中的數據是一個很有效的方案。其訪問的數據量遠遠小于訪問所有數據的數據量。每頁的數據量可以動態地進行調整,以適應實際的需求。實現優化技術,需要進行2步操作,第一,確定整個數據量的頁數,以及每頁的數據索引范圍;第二,修改訪問數據的SQL 語句,以每頁的數據索引范圍為單位訪問數據。這樣就可以實現只訪問每頁指定范圍的需求數據,而不是訪問所有的需求數據。實現原理如圖2所示。

圖2 優化的數據訪問

下面用一個實例實現優化方案。數據庫系統采用SQL Server 2005,數據庫中有3個數據表Unit,Employeer,keyan,分別為學校部門表、員工表、員工科研信息表。按職工姓名查詢其所有科研信息。實現的界面設計如圖3所示。

圖3 界面設計

3.1 分頁技術的實現

3.1.1 數據記錄的獲取

為了計算數據總頁數,需獲取數據記錄的總數,因此設計GetOrdersCount方法,以實現數據記錄總數的獲取。在該方法中,以員工姓名name作為動態參數進行動態查詢,并利用SQL語句中的count聚合函數獲取數據記錄總數。

public virtual int GetOrdersCount(string qury )

{ Database d = new Database();

string k;

k = "select count(Unit.Unit_Name) from Employeer,Unit,keyan where Employeer.Unit_ID=Unit.Unit_ID and Employeer.Employeer_ID=keyan.Employeer_ID and Employeer.Employeer_Name=@name";//設計的SQL語句

SqlConnection conn = … //利用前述的技術創建連接對象

conn.Open( );//打開連接

SqlCommand cmd = new SqlCommand(k,conn);

cmd.Parameters.Add("@name",SqlDbType.NVarChar,10);

cmd.Parameters["@name"].Value = qury;

//創建了帶參數查詢的命令對象,以name為查詢參數,qury為具體的查詢值

return (int)cmd.ExecuteScalar();//返回查詢的記錄條數

}

3.1.2 頁數的計算

通過執行GetOrdersCount方法獲取數據記錄總數,并設置每頁訪問的數據量(假設每頁訪問10條記錄,每頁的記錄數可以根據需求進行更改),從而計算出數據總頁數。計算總頁數的實現代碼如下所示。

int count = this.GetOrdersCount(qury);// qury為具體的查詢值

int PagesCount = count / 10; // PagesCount為總頁數

int temp = count % 10;

if (temp != 0)

PagesCount++; //最后一頁不足10條記錄,任然為一頁累加到總頁數中

3.2 數據訪問技術的優化實現

3.2.1 數據訪問的優化設計

在數據訪問層的設計中,由GetData方法實現以頁為單位的數據訪問;該方法根據數據索引范圍對數據庫進行訪問,從而極大地減少了服務器與客戶機之間傳送的數據流量。數據索引范圍由起始索引號和終止索引號組成,其中起始索引號由頁號確定;終止索引號=起始索引號+每頁數據記錄條數。在GetData方法中,以參數startRowIndex為指定的起始索引號,以參數maximumRows為每頁數據記錄條數進行SQL語句的優化設計,通過執行優化的SQL語句,完成指定范圍的數據訪問。

public DataView GetData(int startRowIndex,int maximumRows,string sortExpression,string qury)

{ //查詢指定索引范圍的數據,startRowIndex為起始索引號,maximumRows為查詢的記錄條數 ,sortExpression為對結果的排序條件,qury為查詢值。

string sql = @"with keyanTable as

(select Unit.Unit_Name,Employeer.Employeer_Name,Employeer.Employeer_Degree,Employeer.Employeer_zhicheng,keyan.Keyan_content,keyan.keyan_class,keyan.Declare_time,ROW_NUMBER() OVER(ORDER BY {0}) as RowNumber

from Employeer,Unit,keyan where Employeer.Unit_ID = Unit.Unit_ID and Employeer.Employeer_ID = keyan.Employeer_ID )

select * from keyanTable where RowNumber > {1} and RowNumber <= {2} and keyanTable.Employeer_Name = ‘{3};"; //優化后的SQL語句

if (string.IsNullOrEmpty(sortExpression))

sortExpression = "Employeer.Employeer_ID ASC";

sql = string.Format(sql,sortExpression,startRowIndex,startRowIndex + maximumRows,qury);

// startRowIndex起始索引號;startRowIndex + maximumRows為終止索引號

SqlConnection conn = ……//利用前述的技術創建連接對象

SqlDataAdapter da = new SqlDataAdapter(sql,conn);

DataSet ds = new DataSet();

da.Fill(ds,”Information”);

return ds.Tables[“Information”].DefaultView;//返回數據視圖

}

3.2.2 表示層的設計

在客戶端,根據指定頁確定數據索引范圍的起始索引號,起始索引號通過公式:this.GetData(int.Parse(lb2.Text)×10-10計算得出。其中,int.Parse(lb2.Text)為客戶端指定的頁號,10為每頁的記錄數;每頁的數據訪問量以每頁的記錄條數為標準。 將動態生成的數據索引范圍作為參數執行GetData方法,實現按照指定頁的數據索引范圍訪問數據。

string qurystr = TextBox8.Text.Trim();//獲取界面上的查詢值

DataView dv = this.GetData(int.Parse(lb2.Text) * 10 - 10,10,"Employeer.Employeer_ID DESC",qurystr);

// lb2.Text為訪問的頁號值 ,10為每頁的訪問的記錄數

GridView1.DataSource = dv;

GridView1.DataBind( );

4 結 語

對數據訪問技術進行優化后,降低了對后臺數據庫的訪問數據量,進而減少了所占內存空間的大小,降低了在網絡中傳輸的數據量。該優化方案提高了Web應用軟件運行的性能,在實際使用時有很大的意義。

參考文獻

[1]陳建國.開發高性能ADO.NET應用程序的探討[J].福建電腦,2007(1):177-178.

[2][美]Glenn Johnson.ADO.NET 2.0高級編程[M].段超,譯.北京:清華大學出版社,2006.

[3]陳永強.SQL Server 2005 Web應用開發[M].北京:清華大學出版社,2008.

[4]王強,滕剛.微軟培訓教材[Z].2008.

[5]李昕,常革新,崔杰.基于ADO.NET的ASP.NET頁面程序[J].遼寧工程技術大學學報:自然科學版,2006,25(2):250-252.

[6]王磊.基于.NET平臺的數據庫訪問技術[J].福建電腦,2006(12):75-89.

[7]孔延香,李永忠,郭秀峰.ADO.NET數據庫訪問技術研究與實現[J].現代電子技術,2005,28(16):51-52,59.

[8]林平榮.ADO.NET的數據庫訪問技術研究與實現[J].電腦知識與技術,2008,7(1):1 198-1 201.

[9]劉瑩.基于的ADO.NET數據庫訪問技術研究[J].電腦知識與技術,2008,18(2):1 580-1 582.

[10]陳平,池同柱.ADO.NET數據訪問模式選擇及優化[J].福建電腦,2007(7):80,72.

猜你喜歡
優化方案
淺談業擴報裝在業務流程和制度方面的優化方案
EPON技術在城區網絡優化中的應用
全站儀在數字繪圖中測量方法優化方案
科技資訊(2016年25期)2016-12-27 18:49:50
大學周邊健身房滿意度調查報告
證券行業信息系統安全運行問題及優化
湖北經濟消費結構優化研究
中國經貿(2016年20期)2016-12-20 14:06:06
山地光伏電站優化方案研究應用與建議
加強施工項目成本管理的思路與對策
科技視界(2016年20期)2016-09-29 13:13:20
淺議超臨界機組節能改造及運行優化方案
淺析多元化電費繳納方式的優化探討
主站蜘蛛池模板: 蜜桃视频一区二区| 亚洲自偷自拍另类小说| 亚洲中文字幕23页在线| 欧美一区精品| 欧美成一级| 日韩成人在线网站| 国产自在自线午夜精品视频| 激情网址在线观看| 国产精品久久久精品三级| 少妇极品熟妇人妻专区视频| 欧美天堂在线| 国产网站一区二区三区| 亚洲一区二区三区麻豆| 色婷婷亚洲十月十月色天| 国产美女无遮挡免费视频| 无码人中文字幕| 日韩在线成年视频人网站观看| 日韩东京热无码人妻| 天堂在线www网亚洲| AV在线天堂进入| 亚洲av无码片一区二区三区| 亚洲伊人久久精品影院| 91啦中文字幕| 91九色国产porny| 57pao国产成视频免费播放| 亚洲日韩精品欧美中文字幕 | 伊人久久大香线蕉成人综合网| 性色在线视频精品| 欧洲成人在线观看| 亚洲人成网站日本片| 玖玖精品视频在线观看| 亚洲无码视频图片| 女人av社区男人的天堂| 国产真实乱人视频| 亚洲综合香蕉| 亚洲av中文无码乱人伦在线r| 亚洲成肉网| 婷婷综合亚洲| 毛片视频网| 色窝窝免费一区二区三区| 欧美成人影院亚洲综合图| 欧美第九页| 欧美三级日韩三级| 国产农村妇女精品一二区| 国产午夜精品一区二区三| 人妻丰满熟妇AV无码区| 国产成人精品一区二区免费看京| 91精品国产麻豆国产自产在线| 99精品视频在线观看免费播放| 五月综合色婷婷| 国产成人精品男人的天堂| 99这里精品| 国内精品九九久久久精品| 激情成人综合网| 一级毛片在线播放免费观看| 澳门av无码| 精品国产网站| 中国国产一级毛片| 天天摸天天操免费播放小视频| 国产综合在线观看视频| 日韩AV无码免费一二三区| 国产欧美日韩视频怡春院| 又爽又大又黄a级毛片在线视频| 久久夜色精品| aaa国产一级毛片| …亚洲 欧洲 另类 春色| 亚洲国产91人成在线| a级毛片免费播放| 色悠久久综合| 亚洲人成色77777在线观看| 国产综合精品一区二区| 特级毛片免费视频| 国产精品女主播| 国产福利大秀91| 欧美a在线视频| 欧美日韩免费观看| AV无码无在线观看免费| 在线观看热码亚洲av每日更新| 精品无码国产自产野外拍在线| 色亚洲激情综合精品无码视频 | 尤物特级无码毛片免费| 成人国产小视频|