簡述ADO.NET(一)

来源:https://www.cnblogs.com/goodstudyqiiqi/archive/2018/12/20/10152833.html
-Advertisement-
Play Games

ADO.NET 巨集觀定義 傳統ADO主要針對緊密連接的客戶端/伺服器端系統,而 ADO.NET考慮到了斷開連接式應用並且引進了 Dateset 它代表任意數量的關聯表,其中每個表都包含了行和列的集合的本地副本。使用Dateset的話.在斷開資料庫連接的情況下調用程式集(如 web 頁面或者桌面可執行 ...


ADO.NET 巨集觀定義

傳統ADO主要針對緊密連接的客戶端/伺服器端系統,而 ADO.NET考慮到了斷開連接式應用並且引進了 Dateset 它代表任意數量的關聯表,其中每個表都包含了行和列的集合的本地副本。使用Dateset的話.在斷開資料庫連接的情況下調用程式集(如 web 頁面或者桌面可執行程式)處理和更新它的內容.然後使用關聯的數據適配器把修改後的數據提交回資料庫。

ADO.NET 的三面

從概念上來說,ADO.NET類庫有三種完全不同的方式來實現數據訪問:連接式、斷開式和通過Entity 框架。

當使用連接式的時候,你的代碼需要顯式連接或者斷開基層數據源。用這種方式使用 ADO.NET時,通常會用到連接對象、命令對象和數據讀取器對象來實現這樣的數據交互。

另一方面,斷開式數據訪問允許通過一組DataTable對象(保存在Dataset中)來獲取外部數據的一個客戶端副本;當你通過相關的數據適配器對象來獲取Dataset 的時候,數據連接會自動打開或關閉。你可能也猜到了,這樣能快速釋放連接以便其他調用者使用,也極大增加了系統的可伸縮性

 一旦獲取了一個DataSet後.就能在不需要花費網路流量的情況下隨意修改內容。同樣.如果你想把修改後的結果重新提交回資料庫,需要再次使用數據適配器對象(關聯一組SQL語句)來更新數據源,此時連接會為資料庫更新重新打開併在結束操作後會立即被關閉。

一個數據訪問API,叫做 Entity Framework (簡稱EF).藉助 EF 可以用封裝了大量資料庫底層細節的客戶端對象與關係型資料庫交互。同樣,EF編程模型還可以使用 LINQ to Entity 語法,用強類型的LINQ 查詢與關係劃資料庫交互。

ado.net數據提供程式

ADO.NET沒有提供單一對象集來和多個資料庫管理系統(DBMS)進行通信.而是提供了多種數據提供程式.每種為某個DBMS進行優化,這種方法的好處是,一來能以編程方式利用DBMS獨有的一些特性,二來能直接和基層的DBMS引擎進行連接而不需要為不同的DBMS做中間的映射層。
簡單來說,數據提供程式是一組定義在用於和特定的數據源類型進行通信的命名空間內的一組類
型。不管你用的是哪種數據提供程式.它們都有一系列類來提供核心功能。

 
     AOO.NET數據提供程式的一些核心對象
 對象  基類  實現的介面  作用
Connection   DbConnection  IDbConnection  連接和斷開數據源,提供了相關事務對象的訪問 
 Command  DbCommand IDbCommand  代表SQL查詢語句或者存儲過程名,同樣提供了相關數據讀取器對象的訪問  
 DataReader DbDataReader IDbDataReader和IDataReader
提供只讀只向前形式的教據訪問 
DataAdapter  DbDataAdapter  DbDataAdapter和IDataAdapter  在資料庫和調用這之間傳遞DataSet,內置4個命令對象來實現教據的查詢、插入、修改和刪除操作 
Parameter DbParameter  IDataParameter和IDbDataParameter 在參數化查詢中表示參數
Transaction DbTransaction IDbTransaction  IDbTransaction   實現資料庫事務

 

 儘管這些類的命名對於不同的數據提供程式不盡相同(比如SqlConnection 和OracleConnection 、OdbcConnection 和MySqlConnection )。但是它們都從相同的基類(就連接對象而言,是DbConnection)繼承並且實現相同的介面(如 IDbConnection)。這樣的話.一旦你掌握了一種數據提供程式的用法.學習其他的數據提供程式就非常簡單了;

微軟提供的ado.net數據提供程式

  由定義在system.Data.OleDb 命名空間下的類組成的OLE DB 數據提供程式能讓你訪問所有支持基於傳統COM的OLE DB協議的資料庫。使用這個數據提供程式,能非常簡單地改變連接字元串中的"Provider",並能和各種OLE DB資料庫進行通信。

 需要知道的是,其實OLE DB數據提供程式在後臺調用各種COM對象來實現數據交互,這可能會影響程式的性能。基本上當某個DBMS沒有對應的.NET數據提供程式時,我們才會用OLE OB數據提供程式。然而,稱職的OBMS 都應該有自定義的ADO.NET教據提供程式提供下載。System.Data.OleDb應該被稱為遺留命名空間

 System.Data.Sqlclient命名空間包含SQL server 數據提供程式的一些類,井且提供了和OLE DB數據提供程式差不多的一些功能.但是主要的區別是它繞開OLE DB層進行訪問。帶來的效率顯而易見。同樣,SQL server數據提供程式也能很好利用DBMS的一些特性

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • sql註入後可以通過該資料庫獲取所有表的欄位信息 1. COLLATIONS表 提供有關每個字元集的排序規則的信息。 COLLATIONS表包含以下列: COLLATION_NAME 排序規則名稱。 CHARACTER_SET_NAME 與排序規則關聯的字元集的名稱。 ID 排序規則ID。 IS_D... ...
  • 在理解有向圖和強連通分量前必須理解與其對應的兩個概念,連通圖(無向圖)和連通分量。 連通圖的定義是:如果一個圖中的任何一個節點可以到達其他節點,那麼它就是連通的。 例如以下圖形: 這是最簡單的一個連通圖,即使它並不閉合。由於節點間的路徑是沒有方向的,符合從任意一個節點出發,都可以到達其他剩餘的節點這 ...
  • 1. isinstance, type, issubclass isinstance: 判斷你給對象是否是xx類型的. (向上判斷 type: 返回xxx對象的數據類型 issubclass: 判斷xxx類是否xxx的子類 2. 如何區分方法和函數 在類中: 實例方法 如果是類名.方法 函數 如果是 ...
  • 1. isinstance, type, issubclass的區別 2. 反射 主要是用到了4個函數( 用的最多的就是getattr()和 hasattr() ): getattr() 從xxx對象中獲取到xxx屬性值 hasattr() 判斷xxx對象中是否有xxx屬性值 delattr() 從 ...
  • 在面向對象編程實踐中,我們通過眾多的類來組織一個複雜的系統,這些類之間相互關聯、調用使他們的關係形成了一個複雜緊密的網路。當系統啟動時,出於性能、資源利用多方面的考慮,我們不可能要求 JVM 一次性將全部的類都載入完成,而是只載入能夠支持系統順利啟動和運行的類和資源即可。那麼在系統運行過程中如果需要 ...
  • 1.成員 在類中你能寫的所有內容都是類的成員 2.變數 1. 實例變數:昨天寫的就是實力變數,由對象去訪問的變數 2. 類變數: 這個變數屬於類.但是對象也可以訪問 實例變數 class Person: def __init__(self, name, id, gender, birth): sel ...
  • 很多時候寫windows程式都需要結合多線程,在C#中用如下得代碼來創建並啟動一個新的線程。 但是很多時候,在新的線程中,我們需要與UI(Windows窗體設計器用戶界面)進行交互,在C#中不允許直接這樣做。可以參考MSDN中的描述。 “Windows 窗體”使用單線程單元 (STA) 模型,因為“ ...
  • 在您的手機中通知您家中的入侵者,並拍攝他們的照片 介紹 在本文中,我將展示一些DIY東西​​,用於安裝監控系統,檢測家中的入侵者,拍攝照片並通過手機通知您,必要時可以打電話給警察並提供照片以便快速識別劫匪,並提高你恢復所有被盜事物的機會。 當然,除了這個軟體,你必須提供一些硬體,但我已經在我家使用相 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...