簡單了解ADO.NET SqlConnection新特性
ADO.NET2.0的特性想必大家也都體驗到它的好處了,它的新特性讓你愛不釋手,所謂一分耕耘,一分收獲,付出了就一定會有回報的,說了這么多還是希望大家多了解了解ADO.NET原理機制,我們這里就先不和大家說關于原理的分析了,我們就ADO.NET SqlConnection的一些新特性來分析一下吧。
#T#ADO.NET框架支持兩種模式的數據訪問:連接模式(Connected)和非連接模式(disconnected)。這一節介紹如何使用連接模式訪問數據庫中的數據,利用ADO.NET中的 Connection,Command,DataReader來獲取和修改數據庫中的數據 。使用RetrieveStatistics()方法獲得數據命令執行時的統計信息,例如,可以獲取總命令執行時間的統計信息。
ADO.NET SqlConnection統計信息有以下常用屬性可以獲得:
◆BytesReceived : 查詢中接收到的字節數
◆BytesSend : 發送出數據的字節數
◆ConnectionTime : 當前連接被開啟的總時間
◆ExecutionTime : 返回以毫秒為單位的連接執行時間
◆IduCount: 用于返回被執行Insert、Update、Delete命令的次數
◆IduRows : 用于返回被執行Insert、Update、Delete命令的行數
◆SelectCount: 用于返回Select命令執行的次數
◆SelectRows : 用于返回Select命令執行的行數
ADO.NET SqlConnection案例分析:取得數據庫查詢的執行時間
- // Movies類中的GetAll方法返回一個List對象,該對象可以被GridView等控件做為數據源綁定
- namespace DawnDataObject
- {
- public class Movies
- {
- public static readonly string _connectionString;
- // 連接數據庫字符串為靜態成員,每個實例共享。
- 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方法返回一個List對象,該對象可以被GridView等控件做為數據源綁定
- public List<Movies> GetAll(out long executeTime)
- // executeTime作為out參數
- {
- 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; // 開啟獲取統計信息的功能
- using(conn){ // using關鍵字指定了conn一旦離開這個代碼段,自動調用其Dispose函數
- 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;
- }
- }
- }
- }