簡(jiǎn)單了解ADO.NET SqlConnection新特性
ADO.NET2.0的特性想必大家也都體驗(yàn)到它的好處了,它的新特性讓你愛不釋手,所謂一分耕耘,一分收獲,付出了就一定會(huì)有回報(bào)的,說(shuō)了這么多還是希望大家多了解了解ADO.NET原理機(jī)制,我們這里就先不和大家說(shuō)關(guān)于原理的分析了,我們就ADO.NET SqlConnection的一些新特性來(lái)分析一下吧。
#T#ADO.NET框架支持兩種模式的數(shù)據(jù)訪問(wèn):連接模式(Connected)和非連接模式(disconnected)。這一節(jié)介紹如何使用連接模式訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),利用ADO.NET中的 Connection,Command,DataReader來(lái)獲取和修改數(shù)據(jù)庫(kù)中的數(shù)據(jù) 。使用RetrieveStatistics()方法獲得數(shù)據(jù)命令執(zhí)行時(shí)的統(tǒng)計(jì)信息,例如,可以獲取總命令執(zhí)行時(shí)間的統(tǒng)計(jì)信息。
ADO.NET SqlConnection統(tǒng)計(jì)信息有以下常用屬性可以獲得:
◆BytesReceived : 查詢中接收到的字節(jié)數(shù)
◆BytesSend : 發(fā)送出數(shù)據(jù)的字節(jié)數(shù)
◆ConnectionTime : 當(dāng)前連接被開啟的總時(shí)間
◆ExecutionTime : 返回以毫秒為單位的連接執(zhí)行時(shí)間
◆IduCount: 用于返回被執(zhí)行Insert、Update、Delete命令的次數(shù)
◆IduRows : 用于返回被執(zhí)行Insert、Update、Delete命令的行數(shù)
◆SelectCount: 用于返回Select命令執(zhí)行的次數(shù)
◆SelectRows : 用于返回Select命令執(zhí)行的行數(shù)
ADO.NET SqlConnection案例分析:取得數(shù)據(jù)庫(kù)查詢的執(zhí)行時(shí)間
- // Movies類中的GetAll方法返回一個(gè)List對(duì)象,該對(duì)象可以被GridView等控件做為數(shù)據(jù)源綁定
- namespace DawnDataObject
- {
- public class Movies
- {
- public static readonly string _connectionString;
- // 連接數(shù)據(jù)庫(kù)字符串為靜態(tài)成員,每個(gè)實(shí)例共享。
- static Movies(){
- _connectionString = WebConfigurationManager.ConnectionStrings["DawnEnterpriseDBConnectionString"].
- ConnectionString;
- }
- private string _title;
- private string _director;
- // Movies類中包括的屬性有Title、Director
- public string Title{
- get { return _title; }
- set { _title = value; }
- }
- public string Director {
- get { return _director; }
- set { _director = value; }
- }
- // Movies類中的GetAll方法返回一個(gè)List對(duì)象,該對(duì)象可以被GridView等控件做為數(shù)據(jù)源綁定
- public List<Movies> GetAll(out long executeTime)
- // executeTime作為out參數(shù)
- {
- List<Movies> result = new List<Movies>();
- SqlConnection conn = new SqlConnection(_connectionString);
- SqlCommand comm = new SqlCommand("WAITFOR DELAY '0:0:03';select Title,Director from Movies", conn);
- conn.StatisticsEnabled = true; // 開啟獲取統(tǒng)計(jì)信息的功能
- using(conn){ // using關(guān)鍵字指定了conn一旦離開這個(gè)代碼段,自動(dòng)調(diào)用其Dispose函數(shù)
- conn.Open();
- SqlDataReader reader = comm.ExecuteReader();
- while(reader.Read()){
- Movies newnewmovie = new Movies();
- newmovie._title = (string)reader["Title"];
- newmovie._director = (string)reader["Director"];
- result.Add(newmovie);
- }
- IDictionary stats = conn.RetrieveStatistics();
- executeTime = (long)stats["ExecutionTime"];
- return result;
- }
- }
- }
- }