首頁 後端開發 C#.Net教程 ADO.NET實用實例介紹

ADO.NET實用實例介紹

Jul 03, 2017 pm 04:59 PM
介紹 實用

要充分發揮ADO.NET的優勢,不僅需要全面、深入理解ADO.NET程式設計模型,及時總結經驗、技巧也十分重要。 ADO已經有多年的實務經驗,ADO.NET以此為基礎,提供了更豐富、更強大的工具;儘管如此,ADO.NET的設計目標畢竟不是提供一個即插即用的工具,它不會把所有的程式設計工作簡化到僅靠滑鼠點擊就可以完成的程度。 
  ADO.NET包含了一大堆代表資料存取模型中各種邏輯實體的對象,其中特別連結、事務這兩個對象最為重要。連線的作用是建立一個與後端資料庫通訊的通道,建立連線物件必須以特定的.NET資料提供者為基礎。事務物件可以在現有的連線物件上建立,也可以透過明確地執行一個BEGIN TRAN SQL語句來建立。雖然理論很簡單,但實際上,圍繞連接、事務的不確定因素很多,而且它們對應用整體的穩定性和效率有著至關緊要的影響。 

  如何儲存連線字串,保護連線字串中可能包含的敏感資訊(例如密碼)?如何設計一個完善的資料存取策略,既考慮到安全性(即身份驗證、授權),卻又不至於對效能和可擴展性造成太大的影響?如果需要用到事務,那麼如何有效率地實現和控制事務?採用自動事務還是手動事務?在使用ADO.NET時,這些問題都必須仔細考慮。 

  一、連接字串,連接池 

  資料庫連接是一種重要的、有限的、開銷昂貴的資源,因此用好連接物件是任何應用的最基本的要求。使用資料庫連線的重點可總結如下: 

  保存連線字串應注意安全。 
  開啟連線應遲,關閉連線應早。 
  連接字串是存取資料庫的鑰匙。連接字串除了說明要存取的資料之外,還包含了使用者為什麼可以存取那些資料的身份證明。在執行資料庫操作時,使用者身分證明是確定資料存取權限的最重要的因素。 

  1.1 保存連接字串 

#  目前,硬編碼的連接字串具有最佳的效能,因為它們直接編譯進了應用的程式碼之中。然而,硬編碼的字串影響程式的靈活性,一旦連接字串改變,應用程式必須重新編譯。 

  將連接字串保存到外部提高了靈活性,代價是存取外部字串需要付出額外的開銷。但在絕大多數情況下,由此導致的效能開銷可以忽略不計,真正需要擔心的是安全性問題。例如,攻擊者可能修改、竊取連接字串。將連接字串儲存到外部環境的常見途徑有:設定檔,UDL文件,Windows註冊表。 

  .NET框架設定檔以純文字檔案的形式部署,存取方便。如果連接字串包含密碼,文字格式將是最大的缺陷所在,因為密碼將以明文的形式儲存。可以考慮引入一個專用的加密/解密引擎,不過這部分工作需要開發者自己完成。 

  UDL文件是供OLE DB提供者使用的文字文件,也就是說,SQL Server託管提供者不支援UDL文件。 UDL檔案也存在和前面的設定檔一樣的安全性問題,總地看來優勢不多。 

  最後,Windows登錄可以作為一個天然安全的儲存場所。註冊表是一個保存關鍵資訊的系統知識庫,如果結合運用加密技術,可以達到較高的安全性。使用註冊表的主要缺點是部署麻煩,要求建立註冊鍵(可能還要執行加密)以及從註冊表讀取資料。雖然.NET Framework提供了一組呼叫底層Win32 API的封裝類,但這些類別都沒有提供加密功能。 aspnet_setreg.exe工具可以用來建立HKEY_LOCAL_MACHINE下的註冊鍵保存使用者名稱和密碼,例如:aspnet_setreg.exe -k "Software\MyData" -u:userID -p:password。該命令將加密指定的用戶ID和密碼。 

  1.2 連接池原理 

#  連接池允許我們透過一個緩衝池重複使用現有的連接對象,避免每次使用連接對象時都要新建一個對象。採用連線池之後,只要少量的連線物件就可以滿足大量客戶端的需求。 

  每一個連接池都與一個獨立的連接字串及其事務上下文關聯。每次開啟新的連接,資料提供者會嘗試將指定的連接字串與連接池的字串進行比對。如果配對失敗,資料提供者建立新的連線並將它加入連線池。連接池被建立之後,除非進程結束,否則不會被拆除。有人認為這種處理方式會影響效能,其實不然,維護一個不活動的或是空的連線池不需要多少開銷。 

  連接池建立之後,系統會建立一些連接物件並將它們加入連接池,直到達到額定的最小連接物件數量。以後,系統會根據需要新建和加入連接對象,一直到達最大連接對象數量限額為止。如果程式要求連線物件時沒有空閒的連線物件可用,且連線池裡面的物件數量已達到上限,則要求被放入佇列,一旦有連線被釋放回緩衝池就立即取出使用。 

  避免以程式設計的方式建構連接字串。如果透過合併多個輸入資料的方式建構出連接字串,很容易給予注入式攻擊以可乘之機。如果必須使用到使用者輸入的數據,務必進行嚴格的驗證。 

  1.3 關閉​​連線 

  關閉一個連線時,連線物件會傳回連線池以便重複使用,但此時實際的資料庫連線並未被移除。如果停用了連線池,則實際的資料庫連線也被關閉。這裡必須強調的一點時,連接物件使用完畢後應明確關閉並將它返回給連接池,不要依靠垃圾收集器來釋放連接。實際上,當連接對象的引用超出有效範圍時,連接不一定被關閉——垃圾收集器的功能是拆除代表物理連接的.NET封裝對象,但這並不意味著底層的連接也被關閉了。 

  呼叫Close或Dispose方法可以將連線釋放回連接池。只有當生存期結束或出現嚴重錯誤時,連接物件才會被從連接池刪除。 

  1.4 連接池與安全 

#  如果一個應用程式的所有資料存取操作都使用相同的連接字串,連接池的優點將發揮到極限。但是,這只是一種理想化了的狀況,很可能與應用程式的其他要求存在衝突。例如,如果只使用一個連接字串,要在資料庫這一層次上執行安全控制就很困難了。

  另一方面,如果讓每個使用者分別使用自己的連接字串(即為每個使用者分別設定資料庫帳戶),勢必出現大量小型的連線池,許多連線根本不會被重複使用。按照慣例,這類問題的最佳解決方案是尋找兩個極端之間的一個適當折衷點。我們可以設定一組具代表性的公用帳戶,同時修改預存程序,使之接受一個表示使用者識別的參數,預存程序根據傳入的使用者標識執行不同的操作。 

  二、事務模式 

#  分散式企業應用離不開事務。在資料存取代碼中加入事務管理功能主要有兩種方式:手動方式,自動方式。 

  在手動方式中,程式設計師負責撰寫所有設定、使用交易機制的程式碼。自動(或COM+)事務則在.NET類別中加入聲明式屬性,指定執行時間物件的事務特性。自動方式方便了將多個組件配製成在同一個事務之內運作。兩種事務方式都支援本地的或分散式的事務,但自動的事務方式極大地簡化了分散式事務處理。 

  必須注意的是,事務是一種開銷很大的操作,所以決定使用事務之前務必再三考慮。如果確實需要使用事務,那就要盡量縮小事務的粒度,減少對資料庫的加鎖時間、加鎖範圍。例如,對於SQL Server,單一的SQL語句不需要明確地宣告事務,SQL Server會自動將每個語句當作一個獨立的事務來運作。手動的本地事務總是比其他事務快得多,因為它不需要涉及DTC(Distributed Transaction Coordinator)。 

  手動事務、自動事務應視為兩種不同的、互斥的技術。如果要在單一資料庫上執行事務性操作,優先考慮手動事務。當單一事務跨越多個遠端資料庫,或單一事務涉及多個資源管理器(例如,一個資料庫和一個MSMQ資源管理器),優先考慮自動事務。不管怎樣,應極力避免混合運用兩種事務模式。如果效能不是特別重要,即使只對一個資料庫操作也可以考慮使用自動事務,使程式碼更加簡潔(但速度略慢)。 

  總而言之,要提高資料庫存取程式碼的質量,必須深入了解ADO.NET物件模型,根據實際情況靈活運用各種技巧。 ADO.NET是一個公用的API,各種應用程式-不管是Windows窗體應用程式、ASP頁面或Web服務,都可以透過ADO.NET存取資料庫;但是,ADO.NET不是一邊接受輸入、一邊吐出結果的黑箱,而是一個由許多工具組成的工具箱。  

#

以上是ADO.NET實用實例介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

wapi是什麼東西詳細介紹 wapi是什麼東西詳細介紹 Jan 07, 2024 pm 09:14 PM

wapi這個名詞使用者可能在使用網路得時候見過過,但是對於一部分人來說肯定都不知道wapi是什麼,下面就帶來了詳細介紹,幫助不知道小伙伴去了解。 wapi是什麼東西:答:wapi是無線區域網路鑑別和保密的基礎架構。這就像紅外線和藍牙等功能一樣,一般都覆蓋在辦公大樓等地方的附近。基本上都是為一個小部門所有的,所以這個功能涉及的範圍只有幾公里。 wapi相關介紹:1、wapi是無線區域網路裡面的一種傳輸協定。 2.這款技術是可以去避免窄頻帶通訊的問題,可以更好的去進行傳播。 3.只要只需要一個代碼就可以去傳送訊號了

全角英文字母轉換為半角形式的實用技巧 全角英文字母轉換為半角形式的實用技巧 Mar 26, 2024 am 09:54 AM

全角英文字母轉換為半角形式的實用技巧在現代生活中,我們經常會接觸到英文字母,在使用電腦、手機等設備時也經常需要輸入英文字母。然而,有時候我們會遇到全角英文字母的情況,而我們需要使用的是半角形式。那麼,如何將全角英文字母轉換為半角形式呢?以下就為大家介紹一些實用的技巧。首先,全角英文字母和數字是指在輸入法中佔據一個全角位置的字符,而半角英文字母和數字則是佔據一

PyCharm新手指南:學會在PyCharm中刪除項目 PyCharm新手指南:學會在PyCharm中刪除項目 Feb 23, 2024 pm 09:39 PM

PyCharm新手指南:刪除專案的實用技巧PyCharm是一款功能強大的Python整合開發環境(IDE),在進行專案開發時,有時候需要刪除專案或專案中的檔案。本文將介紹在PyCharm中刪除專案的實用技巧,並提供具體的程式碼範例幫助新手更好地理解和應用。 1.刪除項目刪除項目意味著刪除整個項目資料夾,這在我們需要清理或重建項目時非常有用。在PyCharm中刪

詳解win11能否運行PUBG遊戲 詳解win11能否運行PUBG遊戲 Jan 06, 2024 pm 07:17 PM

pubg又稱絕地求生,是一款非常經典的射擊大逃殺類型遊戲,從2016年火爆以來一直擁有非常多的玩家。在最近的win11系統推出後,就有不少玩家想要在win11上游玩它,下面就跟著小編來看看win11是否可以玩pubg吧。 win11能玩pubg嗎:答:win11可以玩pubg。 1.在win11推出之初,因為win11需要開啟tpm的緣故,所以導致很多玩家被pubg封號處理了。 2.不過後來根據玩家的回饋,藍洞方面已經解決了這個問題,目前已經可以在win11中正常玩pubg了。 3.如果大家遇到了pub

Python函數介紹:exec函數的介紹及範例 Python函數介紹:exec函數的介紹及範例 Nov 03, 2023 pm 02:09 PM

Python函數介紹:exec函數的介紹及範例引言:在Python中,exec是一種內建函數,它用於執行儲存在字串或檔案中的Python程式碼。 exec函數提供了一種動態執行程式碼的方式,使得程式可以在執行時間根據需要產生、修改和執行程式碼。本文將介紹exec函數的使用方法,並給出一些實際的程式碼範例。 exec函式的使用方法:exec函式的基本語法如下圖所示:exec

i5處理器是否能裝win11詳細介紹 i5處理器是否能裝win11詳細介紹 Dec 27, 2023 pm 05:03 PM

i5是英特爾旗下的一系列處理器,擁有到現在11代i5的各種不同版本,每一代都有不同效能。因此對於i5處理器是否能夠安裝win11,還要看是第幾代的處理器,下面就跟著小編一起來分別了解一下吧。 i5處理器能裝win11嗎:答:i5處理器能裝win11。一、第八代及之後的i51、第八代及後續的i5處理器是能夠滿足微軟的最低配置需求的。 2.因此我們只需要進入微軟網站,下載一個「win11安裝助手」3、下載完成後,運行該安裝助手,根據提示進行操作就可以安裝win11了。二、第八代之前的i51、第八代之

介紹最新的Win 11聲音調法方法 介紹最新的Win 11聲音調法方法 Jan 08, 2024 pm 06:41 PM

很多用戶更新了最新的win11之後發現自己系統的聲音有了些許的變化,但是又不知道該怎麼去進行調整,所以今天本站就給你們帶來了電腦最新win11聲音調法介紹,操作不難而且選擇多樣,快來一起下載試試吧。電腦最新系統windows11聲音如何調1、先右鍵點選桌面右下角的聲音圖標,並選擇「播放設定」。 2、然後進入設定中點選播放列中的「揚聲器」。 3、隨後點選右下方的「屬性」。 4.點選屬性中的「增強」選項列。 5.此時如果「禁用所有聲音效果」前的√勾上了就把他取消。 6、之後就可以選擇下面的聲音效果來進行設定並點

edge快捷鍵的介紹 edge快捷鍵的介紹 Jul 12, 2023 pm 05:57 PM

在現今快速的生活,為了提高工作效率,快捷鍵是必備的工作需求。快捷鍵是指按鍵或按鍵組合,可提供另一種方式來執行通常使用滑鼠執行的操作。那麼edge快捷鍵有哪些呢? edge快捷鍵的功能又有哪些呢?下面小編整理了一個edge快捷鍵的介紹,有興趣的朋友快來看看吧! Ctrl+D:將目前頁面新增至收藏夾或閱讀清單Ctrl+E:在網址列中執行搜尋查詢Ctrl+F:在頁面上尋找Ctrl+H:開啟歷史記錄面板Ctrl+G:開啟閱讀清單面板Ctrl +I:打開收藏夾列表面板(測試好像不起作用)Ctrl+J:打開

See all articles