已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
ADO.NET 開發(fā)高手系列,臺灣微軟資深特約講師 從 1993 年開始於臺灣微軟主講研討會 臺灣微軟最有價值專家 兩度當(dāng)選 MVP 資深電腦圖書作家 擁有 60 本以上的著作,主講人:章立民,ADO.NET 開發(fā)高手線上教學(xué)課程 第四個單元 如何連接資料來源,連接的基本流程,建立 Connection 物件。 開啟連接。 將命令透過連接傳送至資料來源執(zhí)行並取得所傳回的資料。 執(zhí)行所需的處理並關(guān)閉連接。,如何連接至 SQL Server,建立一個 SqlConnection 物件。 呼叫 SqlConnection 物件的 Open 方法來開啟連接。 將命令透過連接傳送至資料來源執(zhí)行並取得所傳回的資料。 執(zhí)行所需的處理並呼叫 SqlConnection 物件的 Close 方法來關(guān)閉連接。,建立 SqlConnection 物件,使用程式碼建立。 使用 SqlConnection 類別的建構(gòu)函式。 擁有兩個多載版本。 使用 Visual Studio .NET 的資料設(shè)計工具來建立。,使用不內(nèi)含任何參數(shù)的建構(gòu)函式(1/2),預(yù)設(shè)建構(gòu)函式。 使用預(yù)設(shè)建構(gòu)函式建立之 SqlConnection 物件的屬性初值: ConnectionString、Database與DataSource 屬性的初值是空字串(“)。 ConnectionTimeout 屬性的初值是 15。 建立 SqlConnection 物件之後緊接著設(shè)定其 ConnectionString 屬性以便指定連接字串。,使用不內(nèi)含任何參數(shù)的建構(gòu)函式(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 關(guān)閉連接 myConnection.Close() End Try,使用內(nèi)含連接字串參數(shù)的建構(gòu)函式, 宣告一個字串變數(shù)來儲存連接字串 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 關(guān)閉連接 myConnection.Close() End Try,連接字串會內(nèi)含連接(或登入)至一個資料來源時所需的各項資訊。 連接字串中的各個設(shè)定項目稱為關(guān)鍵字(Keyword),其語法格式如下所示: “keyword1value;keyword2value;keyword3value “ 連接字串範(fàn)例: “Persist Security Info=False;Integrated Security=SSPI; “ Connect Timeout=30“,連接字串的關(guān)鍵字說明(1/8),連接字串的關(guān)鍵字說明(2/8),連接字串的關(guān)鍵字說明(3/8),連接字串的關(guān)鍵字說明(4/8),連接字串的關(guān)鍵字說明(5/8),連接字串的關(guān)鍵字說明(6/8),連接字串的關(guān)鍵字說明(7/8),連接字串的關(guān)鍵字說明(8/8),連接字串注意事項(1/4),如果某個關(guān)鍵字在連接字串中出現(xiàn)好幾次,將採用最後一次出現(xiàn)的設(shè)定。 關(guān)鍵字不區(qū)分大小寫。 如果關(guān)鍵字的設(shè)定值是布林值,您可以使用 yes 代替 true,使用 no 代替 false。整數(shù)值會被表示為字串。 SQL Server .NET Framework 資料提供者會使用它自己的通訊協(xié)定來與 SQL Server 通訊。由於它並沒有加入 ODBC 層,因此,當(dāng)連接至 SQL Server 時不支援使用一個 ODBC 資料來源名稱(DSN)。,連接字串注意事項(2/4),關(guān)鍵字之設(shè)定值本身就內(nèi)含分號時的處理方式: 如果設(shè)定值本身就內(nèi)含分號、單引號或雙引號,則必須將此設(shè)定值內(nèi)含於雙引號中。 如果設(shè)定值同時內(nèi)含分號與雙引號字元,則必須將此設(shè)定值內(nèi)含於單引號中。 如果設(shè)定值是以雙引號開頭的,也可以使用單引號 。 如果設(shè)定值是以單引號開頭的,就可以使用雙引號。 如果設(shè)定值同時含有單引號與雙引號字元,則用來包含設(shè)定值的引號字元每次出現(xiàn)在設(shè)定值中時,都必須變成兩個引號。,連接字串注意事項(3/4),要在字串值中內(nèi)含前置或後置空白時的處理方式: 必須將設(shè)定值內(nèi)含於單引號或雙引號中。 整數(shù)、布林值或列舉值前後的任何前置或後置空白都會被忽略,即使內(nèi)含在引號中也是一樣。 使用 .NET Framework 1.1 版時,除非設(shè)定值的第一個或最後一個字元是引號字元,否則您可以在連接字串中使用單引號或雙引號,而不需要使用分隔符號(例如:Data Source= my Server 或 Data Source= my“Server)。,連接字串注意事項(4/4),如果要在關(guān)鍵字或設(shè)定值中內(nèi)含等號(=),則必須在前面加上另外一個等號。以如下所示的連接字串而言,關(guān)鍵字為 key=word,而設(shè)定值為 value: “key=word=value“,範(fàn)例,DemoForm1.vb 示範(fàn)如何使用 Windows 驗證與 SQL Server 驗證來連接至本機電腦之 MSDE 中所指定的 SQL Server 資料庫。 SQL Server 驗證的先決條件:SQL Server 之安全性驗證模式必須設(shè)定成混合驗證模式。,以視覺化方式連接至 SQL Server,實作演練: 示範(fàn)如何在設(shè)計階段建立一個 SqlConnection 物件來連接至本機電腦之 MSDE 中的北風(fēng)貿(mào)易資料庫。,伺服器總管,建立通往 SQL Server 與其他資料庫的資料連接。 開啟資料連接。 登入伺服器並顯示其資料庫與系統(tǒng)服務(wù)。 檢視可用的 Web 服務(wù),以及可用的方法與結(jié)構(gòu)描述的相關(guān)資訊。 儲存資料庫專案與參考。 將節(jié)點從伺服器總管拖曳到 Visual Studio .NET 專案,如此會建立可參考資料資源或監(jiān)視其活動的資料元件。 將Visual Studio .NET 專案所建立的資料元件以程式設(shè)計的方式與資料資源進(jìn)行互動。,安全性議題: SQL Server 驗證 vs Windows 驗證,SQL Server 驗證的缺點:會將使用者識別碼與密碼公開於連接字串中,可能產(chǎn)生潛在的安全漏洞。 Windows 驗證(整合式安全性,亦即信任的連接)並不需要公開連接字串中的使用者識別碼與密碼,因此是連接至 SQL Server 最安全的方式,也是我們所極力推薦的驗證連接方式。 整合式安全性的缺點:整合式安全性需要 Windows 帳戶,因此如果您使用個別的 Windows 帳戶來模擬每一個已驗證的主體,則將會影響連接共用。 解決之道:模擬限制數(shù)量的 Windows 帳戶,而且每一個帳戶代表特定的角色。,ConnectionString 屬性,只有當(dāng)連接處於關(guān)閉狀態(tài)時才可以設(shè)定。 重新設(shè)定一個關(guān)閉狀態(tài)之連接的 ConnectionString 屬性,將使得所有的連接字串值與相關(guān)屬性被重新設(shè)定。 Database= Northwind 更改成 Server=myserver;Integrated Security=SSPI 連接字串在被設(shè)定之後會立即被剖析。 關(guān)鍵字 Persist Security Info 的設(shè)定影響。,ConnectionTimeout 屬性,唯讀的屬性。 取得嘗試建立連接的等待時間(單位:秒)。 0 表示沒有限制,但是由於嘗試連接會永遠(yuǎn)等待,因此應(yīng)該避免在連接字串中使用。,Database 屬性,連接處於關(guān)閉狀態(tài)時:傳回您當(dāng)初建立 SqlConnection 物件時於連接字串中使用Initial Catalog 或 Database 關(guān)鍵字所指定的資料庫名稱。 連接處於開啟狀態(tài)時:傳回連接目前所使用的資料庫名稱。 唯讀的屬性不能使用 Database 屬性來改變連接所使用的資料庫: 請使用 ChangeDatabase 方法來改變連接所使用的資料庫。,DataSource 屬性,取得 SqlConnection 物件所要連接之 SQL Server 執(zhí)行個體的名稱。 唯讀的屬性。,PacketSize 屬性,唯讀的屬性。 取得用來與 SQL Server 執(zhí)行個體通訊之網(wǎng)路封包的大?。▎挝唬何辉M)。 預(yù)設(shè)值是 8192。 當(dāng)執(zhí)行大量複製作業(yè),亦或是傳送或接收大量的 text 或 image 資料,應(yīng)將使用大於預(yù)設(shè)值的封包大小。 當(dāng)傳送與接收少量的資訊,建議將封包大小設(shè)定為 512 個位元組。 PacketSize 應(yīng)該介於 512 到 32767。,ServerVersion 屬性,唯讀的屬性。 取得一個已開啟之連接所連接之 SQL Server 執(zhí)行個體的版本。 版本編號的格式為 #.#.#(主號.次號.組建) 主要版本 次要版本 發(fā)行版本,State 屬性,唯讀的屬性。 取得連接目前的狀態(tài): 0 關(guān)閉 1 開啟,WorkstationId 屬性,唯讀的屬性。 取得用以識別資料庫用戶端的字串。,範(fàn)例,DemoForm2.vb 示範(fàn)如何在執(zhí)行階段動態(tài)連接至本機電腦上執(zhí)行個體名稱為 (local)NetSDK 之 MSDE 中的各個使用者資料庫。,Open 與 Close方法,Open 方法使用連接字串中的資訊來連結(jié)資料來源並建立開放連接。 Close 方法會關(guān)閉連接。關(guān)閉連接是非常重要的,因為大多數(shù)的資料來源僅支援有限數(shù)目的開放連接,而且開放連接會佔用寶貴的系統(tǒng)資源。 某些資料元件的方法會自動開啟與關(guān)閉連接。例如:資料配接器的 Fill 與 Update 方法。 假如連接尚未開啟,則像是 Fill 等方法會自動開啟與關(guān)閉連接。但是如果連接已經(jīng)是開啟的,方法會直接使用它但是不會去關(guān)閉它。 Close 方法會復(fù)原所有暫時停止的交易。,ChangeDatabase 方法,更改一個已開啟之連接所使用的資料庫。,SqlConnection.InfoMessage 事件(1/2),當(dāng) SQL Server 傳回警告或資訊訊息時便會引發(fā) SqlConnection 物件的 InfoMessage 事件,因此您可以使用此事件從資料來源取得警告與資訊訊息。 以 SQL Server 為例,任何嚴(yán)重性為 10 或以下的訊息都屬於資訊性,而且可以使用 InfoMessage 事件加以捕捉。,SqlConnection.InfoMessage 事件(2/2),用戶端應(yīng)該建立 SqlInfoMessageEventHandler 委派來聆聽 InfoMessage 事件。,範(fàn)例,DemoForm3.vb 它示範(fàn)如何針對 MSDE 上的 Pubs 資料庫執(zhí)行 DBCC CHECKDB 陳述式,並使用 InfoMessage 事件從資料來源取得資訊訊息,以便瞭解 DBCC CHECKDB 陳述式的執(zhí)行狀況。,SqlConnection.StateChange 事件,發(fā)生於連接的狀態(tài)變更時。 事件處理常式接收 StateChangeEventArgs 型別的引數(shù)。,範(fàn)例,DemoForm4.vb 示範(fàn)如何使用 StateChange 事件來察覺連接在開啟與關(guān)閉間的轉(zhuǎn)換,以便視需要執(zhí)行必要的處理。,如何捕捉資料提供者所引發(fā)的例外狀況,SqlException SqlError SqlErrorCollection,範(fàn)例,DemoForm5.vb 示範(fàn)如何攔截例外狀況並處理來自 SqlException 類別的 Errors 集合。,連接共用(Connection Pooling),目的:讓應(yīng)用程式能夠重複使用共用集區(qū)(Pool)中現(xiàn)有的連接,而不需要反覆地建立新的連接: 改善應(yīng)用程式的延展性(Scalability) 改善應(yīng)用程式的效能(Performance) 假如您的應(yīng)用程式只需要連接資料庫非常短暫的時間,而且於應(yīng)用程式的執(zhí)行期間需要頻繁地開啟與關(guān)閉連接,則您應(yīng)該考慮使用連接共用。 連接共用的觀念: 使用共用集區(qū)中既存的連接或是建立一個新的共用集區(qū)。 ADO.NET 使用完全相符演算法來根據(jù)連接內(nèi)的連接字串去建立一個共用集區(qū) 。,連接共用範(fàn)例,Dim myConnection1 As New SqlConnection( _ “Persist Security Info=False;Integrated Security=SSPI; “ Database=Northwind“) myConnection3.Open() 此連接字串與共用集區(qū) 1 完全相符,於共用集區(qū)中加入連接,ADO.NET 會替每一個唯一的連接字串建立共用集區(qū),並隨即建立多個連接物件並將其加入共用集區(qū)中,以便滿足共用集區(qū)最小連接數(shù)目的要求。接下來,會視需要將連接加入共用集區(qū)中,直到已至共用集區(qū)最大連接數(shù)目為止。 您可以將共用集區(qū)想像成是一個持有目前沒有被使用之連接的設(shè)施: SqlConnection.Open 方法會從共用集區(qū)中釋放出一個目前沒有被使用的連接給所要求的連接物件使用。 SqlConnection.Close 方法會使得連接又會被傳回至共用集區(qū)中並再度能夠被其他的 SqlConnection 物件所使用。 如果已到達(dá)共用集區(qū)最大連接數(shù)目而且共用集區(qū)中沒有任何連接可以使用,則要求會被排入佇列當(dāng)中。,移除共用集區(qū)中的連接,如果已超過連接的存留期或偵測到與伺服器的連接已經(jīng)中斷,便會將共用集區(qū)中的連接移除。 ADO.NET 會定期掃瞄共用集區(qū),尋找已被釋放至共用集區(qū)且標(biāo)示為無效的物件,然後這些連接會被永久移除。 如果存在的連接是連結(jié)至一個不存在的伺服器,則即使 ADO.NET 尚未偵測到中斷的連接且將其標(biāo)示為無效,仍然可能從共用集區(qū)中取得這個連接。,使用連接字串關(guān)鍵字來控制連接共用,Pooling Connection Lifetime Connection Reset Enlist Max Pool Size Min Pool Size,關(guān)鍵字 Pooling,決定是否啟用連接共用。 預(yù)設(shè)值是 True。 要求某一個資料庫連接不要被保留於連接共用中: Dim myConnection As New SqlConnection( _ “Persist Security Info=False;Integrated Security=SSPI; “ Pooling=false“),關(guān)鍵字 Min Pool Size,設(shè)定共用集區(qū)中至少要持有多少個連接。 預(yù)設(shè)值是 0 。 如果您經(jīng)常需要同時使用多個連接來存取特定的資料來源,可以將此關(guān)鍵字設(shè)定成大於 0 的數(shù)值。,關(guān)鍵字 Max Pool Size,設(shè)定共用集區(qū)中最多能夠持有多少個連接。 預(yù)設(shè)值是 100。 如果連接物件要求一個連接,而共用集區(qū)中的連接數(shù)目已到達(dá)上限時.,等待 Connection Timeout 所指定的時間,如果時間過了之後仍然沒有連接可以使用,擲回一個 InvalidOperationException 例外狀況。 範(fàn)例:DemoForm6.vb,關(guān)鍵字 Connection Reset,決定當(dāng)連接從共用集區(qū)取出後是否會重新設(shè)定。 預(yù)設(shè)值是 True。 對 SQL Server 7.0 而言,將 Connection Reset 設(shè)定成 false 可避免取得連接時需要額外地來回存取伺服器,但是您必須注意連接狀態(tài)(例如:資料庫內(nèi)容)沒有被重設(shè)。 範(fàn)例:DemoForm7.vb,關(guān)鍵字 Connection Lifetime,當(dāng)一個連接被傳回共用集區(qū)時,其建立時間會與目前時間相比較,如果兩者差距的時間超過 Connection Lifetime 所指定的值(單位是秒),則連接會被移除。 預(yù)設(shè)值是 0,它會使得共用連接擁有最長的存留期。,關(guān)鍵字 Enlist,Enlist 屬性的預(yù)設(shè)值是 True,表示如果交易內(nèi)容存在,則 ADO.NET 會自動在建立執(zhí)行緒的目前交易內(nèi)容中登記連接。,監(jiān)控連接共用,使用 SQL Server 2000 的 Profiler 工具。 使用 Windows 2000 Server 或 Windows Server 2003 的效能系統(tǒng)工具: SQL Server .NET Framewo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國斷電開關(guān)數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國坨茶數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年TPU膜項目投資價值分析報告
- 2025年銅液泵項目可行性研究報告
- 2025年蓄電池專用硫酸項目可行性研究報告
- 2025至2030年中國全彩室外電子顯示屏數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國α-酮戊二酸數(shù)據(jù)監(jiān)測研究報告
- 2025年水晶透明底漆項目可行性研究報告
- 2025年天門冬項目可行性研究報告
- 2025至2030年多功能不粘電熱火鍋項目投資價值分析報告
- 【傳媒大學(xué)】2024年新營銷
- 乳腺癌的綜合治療及進(jìn)展
- 【大學(xué)課件】基于BGP協(xié)議的IP黑名單分發(fā)系統(tǒng)
- 2025屆廣東省佛山市高三上學(xué)期普通高中教學(xué)質(zhì)量檢測(一模)英語試卷(無答案)
- 自身免疫性腦炎課件
- 人力資源管理各崗位工作職責(zé)
- 信陽農(nóng)林學(xué)院《新媒體傳播學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024建筑公司年終工作總結(jié)(32篇)
- 信息安全意識培訓(xùn)課件
- 2024年項目投資計劃書(三篇)
- 配電安規(guī)課件
評論
0/150
提交評論