4-1-5
Connection對象
1.Connection對象概述
要開發數據庫應用程序,首先須要創建與數據庫的鏈接。在ADO.NET中,數據庫鏈接是經過Connection對象管理的。此外,事務管理也經過Connection對象進行。不一樣的數據提供程序對應着不一樣的Connection對象,請看錶4-6。
表4-6 各個命名空間中的Connection對象表
提供程序
|
Connection類
|
SQL數據提供程序
|
SqlConnection
|
OLE DB數據提供程序
|
OleDbConnection
|
Oracle數據提供程序
|
OracleConnection
|
ODBC數據提供程序
|
OdbcConnection
|
在後面的內容中,主要以SqlConnection對象爲例。
2.Connection對象的使用
(1)Connection對象的屬性和方法
Connection對象最經常使用的屬性有ConnectionString和Database。其中ConnectionString屬性用來獲取或設置用於打開SQL Server數據庫的字符串。Database屬性用來獲取當前數據庫或鏈接打開後要使用的數據庫的名稱。ConnectionString屬性要使用到鏈接字符串,關於鏈接字符串部分,在後面將有大篇幅來介紹。
Connection對象最經常使用的方法有Open()和Close()。其中Open()方法使用ConnectionString所指定的屬性設置打開數據庫鏈接。若是SqlConnection超出範圍,則不會將其關閉。所以,必須經過調用Close顯式關閉該鏈接。Close()方法用來關閉與數據庫的鏈接。這是關閉任何打開鏈接的首選方法。請看下面的示例:
private
static void OpenSqlConnection(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
Console.WriteLine("State: {0}", connection.State);
}
}
(2)Connection對象組件
.NET開發平臺將一部分對象作成可視化的對象組件,程序員在編程的時候能夠不用編寫大量代碼去定義和使用,只須要在工具箱中拖拽一個組件到窗體上,就能夠進行配置使用。這種方式大幅的提升了編程效率,下降了出錯率,可是在實際項目開發中不建議採起這種拖拽的形式進行ADO.NET開發。
3.
案例學習:經過拖拽形式創建Connection對象的數據庫鏈接實驗
u
實驗步驟(1):
首先右擊工具箱彈出菜單,在彈出菜單中點擊「選擇項」,在出現的選擇工具箱箱中選中要使用到的SqlConnection等一系列ADO.NET對象組件,在它們前面的複選框中打上對號,並;最後點擊「肯定」,SqlConnection等組件就出如今工具箱中。如圖4-13所示。
圖4-13 向工具箱添加組件圖
u
實驗步驟(2):
在工具箱中選擇「數據」選項卡,找到剛剛添加上的SqlConnection對象組件,點擊後向窗體拖放,在設計窗口下的組件欄出現SqlConnection1對象。選中SqlConnection1對象,在屬性窗口找到ConnectionString屬性,選擇右側下拉框中的「新建鏈接」。設計窗口會彈出一個「添加鏈接」窗口(如圖4-14所示)。這個窗口是配置SqlConnection1對象的鏈接屬性而專用的窗口。在「添加鏈接」窗口,首先要在列表中選擇SQL Server服務器,而後要指定用戶和密碼,最後選擇要鏈接的數據庫。點擊「測試鏈接」,若是鏈接成功,則會顯示一則成功消息。這時,就能夠看到SqlConnection1對象的ConnectionString屬性右側欄中出現一長串字符,這就是鏈接字符串。在後續的代碼編寫過程當中,就可使用SqlConnection1對象對數據庫進行訪問了。
圖4-14 添加數據庫鏈接圖
4.案例學習:經過編寫代碼來鏈接數據庫的鏈接實驗
u
實驗步驟(1):定義鏈接字符串
數據庫的鏈接定義通常是以字符串的形式出現,該字符串的定義參見圖4-15所示。
圖4-15 鏈接字符串舉例圖
無論用拖放方式在圖形界面增長的SqlConnection1對象,仍是經過代碼編寫生成的SqlConnection1對象,都須要定義鏈接字符串。界面增長的SqlConnection1對象,其鏈接字符串在配置數據庫鏈接後自動生成,而代碼編寫生成的SqlConnection1對象,其鏈接字符串須要安裝格式要求手工編寫。鏈接字符串決定了鏈接某臺服務器,某個數據庫,還有鏈接方式及要求。
編程時定義鏈接字符串的具體例子,參見圖4-16:
圖4-16 定義鏈接字符串具體舉例圖
圖4-16中,SqlConnection1爲sqlconnection對象,經過sqlconnection對象加載數據庫鏈接字符串與MSSQL進行鏈接。在鏈接字符串中,「Server=SQLDB;」表示存儲「pubs」數據庫的服務器名稱,該服務器名稱爲SQLDB,也能夠寫成IP地址,如123.101.220.1。若是是本地數據庫服務器,能夠有如下幾種寫法:
n
「(local)」或者「.」
n
「127.0.
0.1
」
n
本地機子名稱
在鏈接字符串中,「User id=sa; pwd=password」表示登陸數據庫服務器用戶名稱和密碼,使用這種用戶身份登陸方式必須是,用戶一樣可使用「SQL Server身份認證」登陸數據庫服務器,不然鏈接仍然會失敗。最後的「database=pubs」表示登陸服務器是pubs數據庫。
小知識:
鏈接字符串
全部的鏈接字符串都有相同的格式,它們由一組關鍵字和值組成,中間用分號隔開,兩端加上單引號或雙引號。關鍵字不區分大小寫,可是值可能會根據數據源的狀況區分大小寫。
假設SQL Server2005數據庫服務器爲本機,要訪問的數據庫名爲MyDB,採用Windows集成安全性認證方式。
①
SQL Client
方式的鏈接字符串以下:
"Data Source=127.0.0.1;Persist Security Info=False;Initial Catalog=MyDB;Integrated Security=SSPI"
"Data Source"
是關鍵字,這裏與"server"能夠呼喚,都用來表示數據庫服務器,等號後面就要對應具體的數據庫服務器的IP或者名稱。"Persist Security Info"關鍵字,若是將該關鍵字設置爲true或yes,將容許在打開鏈接後,從鏈接中得到涉及安全性的信息(包括用戶標識和密碼)。若是在創建鏈接時必須提供用戶標識和密碼,最安全的方法是在使用信息打開鏈接後丟棄這些信息,在Persist Security Info設置爲false或no時會發生這種狀況。當您向不可信的源提供打開的鏈接,或將鏈接信息永久保存到磁盤時,這點尤爲重要。若是將Persist Security Info保持爲false,可幫助確保不可信的源沒法訪問鏈接中涉及安全性的信息,並幫助確保任何涉及安全性的信息都不會隨鏈接字符串信息在磁盤上持久化。"Initial Catalog"關鍵字能夠與"database"關鍵字互換,用來指定須要鏈接的數據庫服務器中具體某一數據庫,等號後面就要對應具體的數據庫,本例中就是"MyDB"。"Integrated Security"關鍵字表示是否使用Windows身份驗證(一般稱爲集成安全性)鏈接到服務器數據庫上。若是鍵值爲"true"或者"SSPI"表示指定Windows身份驗證,若是鍵值爲"false"表示不指定Windows身份驗證。可是,只有鍵值"SSPI"將適用於OleDb .NET Framework數據提供程序。對於ODBC .NET Framework數據提供程序,必須使用如下鍵/值"Trusted_Connection=yes;"指定Windows身份驗證。對於不使用Windows身份驗證而使用SQL Server身份驗證,使用"User ID=*****;Password=*****;"替換掉"Integrated Security"關鍵字及其鍵值,來指定用戶名和密碼。
②
OLE DB
方式的鏈接字符串以下:
"Provider=SQLOLEDB;Data Source=127.0.0.1;Persist Security Info=False;
Initial Catalog=MyDB;Integrated Security=SSPI"
"Provider"
關鍵字用來指定哪一類數據源,其鍵值取值能夠參見表4-4,其餘關鍵字用法與SQL Client方式相同。
③
ODBC
方式的鏈接字符串以下:
"Driver={SQL Server};Server=127.0.0.1;Database=MyDB;Trusted_Connection=Yes;UID=Administrator"
"Driver"
關鍵字用來指定哪一類數據源,其鍵值取值能夠參見表4-5,其餘關鍵字用法與SQL Client方式類似。區別就是"Trusted_Connection"、"UID"與"Integrated Security"、"User ID",關鍵字雖然不一樣,可是用法相同。
u
實驗步驟(2):建立Connection對象
在代碼編輯器裏面,經過編寫代碼的方式建立Connection對象的過程參見圖4-17所示:
圖4-17 建立鏈接對象圖
在對象建立過程當中將鏈接字符串做爲參數傳遞給SqlConnection類的構造函數,這樣鏈接對象SqlConnection1就能夠用來訪問數據了。構造函數還有個重載,就是參數爲空的構造函數。在實例化時不將鏈接字符串做爲參數傳給構造函數,實例化以後,給對象SqlConnection1的屬性ConnectionString賦值,完成對象SqlConnection1的設置。例如:
SqlConnection
SqlConnection1 = new SqlConnection();
SqlConnection1.ConnectionString = "Data Source=
10.5.0
.30;Initial Catalog=TTDB;
User ID=TrainingDeveloper Pwd=Password"
;
u
實驗步驟(3):打開與數據庫的鏈接
用Connection對象的Open()方法就能夠打開數據庫鏈接。例如:
SqlConnection1.Open( );