




已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ADO.NET 開發(fā)高手系列,臺灣微軟資深特約講師 從 1993 年開始於臺灣微軟主講研討會 臺灣微軟最有價值專家 兩度當選 MVP 資深電腦圖書作家 擁有 60 本以上的著作,主講人:章立民,ADO.NET 開發(fā)高手線上教學課程 第四個單元 如何連接資料來源,連接的基本流程,建立 Connection 物件。 開啟連接。 將命令透過連接傳送至資料來源執(zhí)行並取得所傳回的資料。 執(zhí)行所需的處理並關閉連接。,如何連接至 SQL Server,建立一個 SqlConnection 物件。 呼叫 SqlConnection 物件的 Open 方法來開啟連接。 將命令透過連接傳送至資料來源執(zhí)行並取得所傳回的資料。 執(zhí)行所需的處理並呼叫 SqlConnection 物件的 Close 方法來關閉連接。,建立 SqlConnection 物件,使用程式碼建立。 使用 SqlConnection 類別的建構函式。 擁有兩個多載版本。 使用 Visual Studio .NET 的資料設計工具來建立。,使用不內含任何參數的建構函式(1/2),預設建構函式。 使用預設建構函式建立之 SqlConnection 物件的屬性初值: ConnectionString、Database與DataSource 屬性的初值是空字串(“)。 ConnectionTimeout 屬性的初值是 15。 建立 SqlConnection 物件之後緊接著設定其 ConnectionString 屬性以便指定連接字串。,使用不內含任何參數的建構函式(2/2), 建立一個 SqlConnection 物件 Dim myConnection As New SqlConnection() 指定用來開啟SQL Server資料庫的連接字串 myConnection.ConnectionString = _ “Persist Security Info=False;Integrated Security=SSPI; “ Connect Timeout=30 “ Try 開啟連接 myConnection.Open() 用來處理資料的程式碼請在此處繼續(xù)撰寫 Catch ex As Exception MessageBox.Show(“無法連接至資料來源?!? Finally 關閉連接 myConnection.Close() End Try,使用內含連接字串參數的建構函式, 宣告一個字串變數來儲存連接字串 Dim myConnectString As String = _ “Persist Security Info=False;Integrated Security=SSPI; “ Connect Timeout=30“ 使用連接字串來建立一個 SqlConnection 物件 Dim myConnection As New SqlConnection(myConnectString) Try 開啟連接 myConnection.Open() 用來處理資料的程式碼請在此處繼續(xù)撰寫 Catch ex As Exception MessageBox.Show(“無法連接至資料來源。“) Finally 關閉連接 myConnection.Close() End Try,連接字串會內含連接(或登入)至一個資料來源時所需的各項資訊。 連接字串中的各個設定項目稱為關鍵字(Keyword),其語法格式如下所示: “keyword1value;keyword2value;keyword3value “ 連接字串範例: “Persist Security Info=False;Integrated Security=SSPI; “ Connect Timeout=30“,連接字串的關鍵字說明(1/8),連接字串的關鍵字說明(2/8),連接字串的關鍵字說明(3/8),連接字串的關鍵字說明(4/8),連接字串的關鍵字說明(5/8),連接字串的關鍵字說明(6/8),連接字串的關鍵字說明(7/8),連接字串的關鍵字說明(8/8),連接字串注意事項(1/4),如果某個關鍵字在連接字串中出現好幾次,將採用最後一次出現的設定。 關鍵字不區(qū)分大小寫。 如果關鍵字的設定值是布林值,您可以使用 yes 代替 true,使用 no 代替 false。整數值會被表示為字串。 SQL Server .NET Framework 資料提供者會使用它自己的通訊協定來與 SQL Server 通訊。由於它並沒有加入 ODBC 層,因此,當連接至 SQL Server 時不支援使用一個 ODBC 資料來源名稱(DSN)。,連接字串注意事項(2/4),關鍵字之設定值本身就內含分號時的處理方式: 如果設定值本身就內含分號、單引號或雙引號,則必須將此設定值內含於雙引號中。 如果設定值同時內含分號與雙引號字元,則必須將此設定值內含於單引號中。 如果設定值是以雙引號開頭的,也可以使用單引號 。 如果設定值是以單引號開頭的,就可以使用雙引號。 如果設定值同時含有單引號與雙引號字元,則用來包含設定值的引號字元每次出現在設定值中時,都必須變成兩個引號。,連接字串注意事項(3/4),要在字串值中內含前置或後置空白時的處理方式: 必須將設定值內含於單引號或雙引號中。 整數、布林值或列舉值前後的任何前置或後置空白都會被忽略,即使內含在引號中也是一樣。 使用 .NET Framework 1.1 版時,除非設定值的第一個或最後一個字元是引號字元,否則您可以在連接字串中使用單引號或雙引號,而不需要使用分隔符號(例如:Data Source= my Server 或 Data Source= my“Server)。,連接字串注意事項(4/4),如果要在關鍵字或設定值中內含等號(=),則必須在前面加上另外一個等號。以如下所示的連接字串而言,關鍵字為 key=word,而設定值為 value: “key=word=value“,範例,DemoForm1.vb 示範如何使用 Windows 驗證與 SQL Server 驗證來連接至本機電腦之 MSDE 中所指定的 SQL Server 資料庫。 SQL Server 驗證的先決條件:SQL Server 之安全性驗證模式必須設定成混合驗證模式。,以視覺化方式連接至 SQL Server,實作演練: 示範如何在設計階段建立一個 SqlConnection 物件來連接至本機電腦之 MSDE 中的北風貿易資料庫。,伺服器總管,建立通往 SQL Server 與其他資料庫的資料連接。 開啟資料連接。 登入伺服器並顯示其資料庫與系統服務。 檢視可用的 Web 服務,以及可用的方法與結構描述的相關資訊。 儲存資料庫專案與參考。 將節(jié)點從伺服器總管拖曳到 Visual Studio .NET 專案,如此會建立可參考資料資源或監(jiān)視其活動的資料元件。 將Visual Studio .NET 專案所建立的資料元件以程式設計的方式與資料資源進行互動。,安全性議題: SQL Server 驗證 vs Windows 驗證,SQL Server 驗證的缺點:會將使用者識別碼與密碼公開於連接字串中,可能產生潛在的安全漏洞。 Windows 驗證(整合式安全性,亦即信任的連接)並不需要公開連接字串中的使用者識別碼與密碼,因此是連接至 SQL Server 最安全的方式,也是我們所極力推薦的驗證連接方式。 整合式安全性的缺點:整合式安全性需要 Windows 帳戶,因此如果您使用個別的 Windows 帳戶來模擬每一個已驗證的主體,則將會影響連接共用。 解決之道:模擬限制數量的 Windows 帳戶,而且每一個帳戶代表特定的角色。,ConnectionString 屬性,只有當連接處於關閉狀態(tài)時才可以設定。 重新設定一個關閉狀態(tài)之連接的 ConnectionString 屬性,將使得所有的連接字串值與相關屬性被重新設定。 Database= Northwind 更改成 Server=myserver;Integrated Security=SSPI 連接字串在被設定之後會立即被剖析。 關鍵字 Persist Security Info 的設定影響。,ConnectionTimeout 屬性,唯讀的屬性。 取得嘗試建立連接的等待時間(單位:秒)。 0 表示沒有限制,但是由於嘗試連接會永遠等待,因此應該避免在連接字串中使用。,Database 屬性,連接處於關閉狀態(tài)時:傳回您當初建立 SqlConnection 物件時於連接字串中使用Initial Catalog 或 Database 關鍵字所指定的資料庫名稱。 連接處於開啟狀態(tài)時:傳回連接目前所使用的資料庫名稱。 唯讀的屬性不能使用 Database 屬性來改變連接所使用的資料庫: 請使用 ChangeDatabase 方法來改變連接所使用的資料庫。,DataSource 屬性,取得 SqlConnection 物件所要連接之 SQL Server 執(zhí)行個體的名稱。 唯讀的屬性。,PacketSize 屬性,唯讀的屬性。 取得用來與 SQL Server 執(zhí)行個體通訊之網路封包的大小(單位:位元組)。 預設值是 8192。 當執(zhí)行大量複製作業(yè),亦或是傳送或接收大量的 text 或 image 資料,應將使用大於預設值的封包大小。 當傳送與接收少量的資訊,建議將封包大小設定為 512 個位元組。 PacketSize 應該介於 512 到 32767。,ServerVersion 屬性,唯讀的屬性。 取得一個已開啟之連接所連接之 SQL Server 執(zhí)行個體的版本。 版本編號的格式為 #.#.#(主號.次號.組建) 主要版本 次要版本 發(fā)行版本,State 屬性,唯讀的屬性。 取得連接目前的狀態(tài): 0 關閉 1 開啟,WorkstationId 屬性,唯讀的屬性。 取得用以識別資料庫用戶端的字串。,範例,DemoForm2.vb 示範如何在執(zhí)行階段動態(tài)連接至本機電腦上執(zhí)行個體名稱為 (local)NetSDK 之 MSDE 中的各個使用者資料庫。,Open 與 Close方法,Open 方法使用連接字串中的資訊來連結資料來源並建立開放連接。 Close 方法會關閉連接。關閉連接是非常重要的,因為大多數的資料來源僅支援有限數目的開放連接,而且開放連接會佔用寶貴的系統資源。 某些資料元件的方法會自動開啟與關閉連接。例如:資料配接器的 Fill 與 Update 方法。 假如連接尚未開啟,則像是 Fill 等方法會自動開啟與關閉連接。但是如果連接已經是開啟的,方法會直接使用它但是不會去關閉它。 Close 方法會復原所有暫時停止的交易。,ChangeDatabase 方法,更改一個已開啟之連接所使用的資料庫。,SqlConnection.InfoMessage 事件(1/2),當 SQL Server 傳回警告或資訊訊息時便會引發(fā) SqlConnection 物件的 InfoMessage 事件,因此您可以使用此事件從資料來源取得警告與資訊訊息。 以 SQL Server 為例,任何嚴重性為 10 或以下的訊息都屬於資訊性,而且可以使用 InfoMessage 事件加以捕捉。,SqlConnection.InfoMessage 事件(2/2),用戶端應該建立 SqlInfoMessageEventHandler 委派來聆聽 InfoMessage 事件。,範例,DemoForm3.vb 它示範如何針對 MSDE 上的 Pubs 資料庫執(zhí)行 DBCC CHECKDB 陳述式,並使用 InfoMessage 事件從資料來源取得資訊訊息,以便瞭解 DBCC CHECKDB 陳述式的執(zhí)行狀況。,SqlConnection.StateChange 事件,發(fā)生於連接的狀態(tài)變更時。 事件處理常式接收 StateChangeEventArgs 型別的引數。,範例,DemoForm4.vb 示範如何使用 StateChange 事件來察覺連接在開啟與關閉間的轉換,以便視需要執(zhí)行必要的處理。,如何捕捉資料提供者所引發(fā)的例外狀況,SqlException SqlError SqlErrorCollection,範例,DemoForm5.vb 示範如何攔截例外狀況並處理來自 SqlException 類別的 Errors 集合。,連接共用(Connection Pooling),目的:讓應用程式能夠重複使用共用集區(qū)(Pool)中現有的連接,而不需要反覆地建立新的連接: 改善應用程式的延展性(Scalability) 改善應用程式的效能(Performance) 假如您的應用程式只需要連接資料庫非常短暫的時間,而且於應用程式的執(zhí)行期間需要頻繁地開啟與關閉連接,則您應該考慮使用連接共用。 連接共用的觀念: 使用共用集區(qū)中既存的連接或是建立一個新的共用集區(qū)。 ADO.NET 使用完全相符演算法來根據連接內的連接字串去建立一個共用集區(qū) 。,連接共用範例,Dim myConnection1 As New SqlConnection( _ “Persist Security Info=False;Integrated Security=SSPI; “ Database=Northwind“) myConnection3.Open() 此連接字串與共用集區(qū) 1 完全相符,於共用集區(qū)中加入連接,ADO.NET 會替每一個唯一的連接字串建立共用集區(qū),並隨即建立多個連接物件並將其加入共用集區(qū)中,以便滿足共用集區(qū)最小連接數目的要求。接下來,會視需要將連接加入共用集區(qū)中,直到已至共用集區(qū)最大連接數目為止。 您可以將共用集區(qū)想像成是一個持有目前沒有被使用之連接的設施: SqlConnection.Open 方法會從共用集區(qū)中釋放出一個目前沒有被使用的連接給所要求的連接物件使用。 SqlConnection.Close 方法會使得連接又會被傳回至共用集區(qū)中並再度能夠被其他的 SqlConnection 物件所使用。 如果已到達共用集區(qū)最大連接數目而且共用集區(qū)中沒有任何連接可以使用,則要求會被排入佇列當中。,移除共用集區(qū)中的連接,如果已超過連接的存留期或偵測到與伺服器的連接已經中斷,便會將共用集區(qū)中的連接移除。 ADO.NET 會定期掃瞄共用集區(qū),尋找已被釋放至共用集區(qū)且標示為無效的物件,然後這些連接會被永久移除。 如果存在的連接是連結至一個不存在的伺服器,則即使 ADO.NET 尚未偵測到中斷的連接且將其標示為無效,仍然可能從共用集區(qū)中取得這個連接。,使用連接字串關鍵字來控制連接共用,Pooling Connection Lifetime Connection Reset Enlist Max Pool Size Min Pool Size,關鍵字 Pooling,決定是否啟用連接共用。 預設值是 True。 要求某一個資料庫連接不要被保留於連接共用中: Dim myConnection As New SqlConnection( _ “Persist Security Info=False;Integrated Security=SSPI; “ Pooling=false“),關鍵字 Min Pool Size,設定共用集區(qū)中至少要持有多少個連接。 預設值是 0 。 如果您經常需要同時使用多個連接來存取特定的資料來源,可以將此關鍵字設定成大於 0 的數值。,關鍵字 Max Pool Size,設定共用集區(qū)中最多能夠持有多少個連接。 預設值是 100。 如果連接物件要求一個連接,而共用集區(qū)中的連接數目已到達上限時.,等待 Connection Timeout 所指定的時間,如果時間過了之後仍然沒有連接可以使用,擲回一個 InvalidOperationException 例外狀況。 範例:DemoForm6.vb,關鍵字 Connection Reset,決定當連接從共用集區(qū)取出後是否會重新設定。 預設值是 True。 對 SQL Server 7.0 而言,將 Connection Reset 設定成 false 可避免取得連接時需要額外地來回存取伺服器,但是您必須注意連接狀態(tài)(例如:資料庫內容)沒有被重設。 範例:DemoForm7.vb,關鍵字 Connection Lifetime,當一個連接被傳回共用集區(qū)時,其建立時間會與目前時間相比較,如果兩者差距的時間超過 Connection Lifetime 所指定的值(單位是秒),則連接會被移除。 預設值是 0,它會使得共用連接擁有最長的存留期。,關鍵字 Enlist,Enlist 屬性的預設值是 True,表示如果交易內容存在,則 ADO.NET 會自動在建立執(zhí)行緒的目前交易內容中登記連接。,監(jiān)控連接共用,使用 SQL Server 2000 的 Profiler 工具。 使用 Windows 2000 Server 或 Windows Server 2003 的效能系統工具: SQL Server .NET Framewo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車行業(yè)項目工程師供應商職責
- 城鎮(zhèn)學困生綜合幫扶計劃
- 遼寧省鐵嶺市調兵山市2025屆九年級下學期中考三模數學試卷(含解析)
- 2025年培訓項目總結及2025年培訓計劃
- 微課程制作教學質量監(jiān)控心得體會
- 醫(yī)療場所設備更新措施
- 公共藝術裝置裝飾項目風險應對措施
- 新蘇教版三年級科學下冊教學安排計劃
- 2025年船舶安全運營管理計劃
- JL1901年度品牌形象內部審核計劃
- 2025廣西公需科目真題續(xù)集(附答案)
- 2025年 浙江“三支一扶”招募筆試考試試卷附答案
- 2025年全國統一高考數學試卷(全國一卷)含答案
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗收規(guī)范
- 數據中心巡檢機器人解決方案
- 鐵路危險貨物運輸及貨物安檢查危技術業(yè)務考核題庫
- 露天礦山安全生產責任制
- 某市印染紡織公司清潔生產審核報告全文
- 山西特崗教師招聘考試真題
- 小學年級組長工作總結二年級
- 員工反違章承諾書
評論
0/150
提交評論