ADO.NET 基礎學習筆記1

来源:https://www.cnblogs.com/change-myself/archive/2019/03/14/10524002.html
-Advertisement-
Play Games

1. ODBC、OLEDB、ADO、ADO.NET之間的關係 ODBC: 開放資料庫互連(ODBC)是MICROSOFT提出的資料庫訪問介面標準。ODBC(Open DatabaseConnectivity,開放資料庫互連)提供了一種標準的API(應用程式編程介面)方法來訪問資料庫管理系統(DBMS ...


1. ODBC、OLEDB、ADO、ADO.NET之間的關係

ODBC: 開放資料庫互連(ODBC)是MICROSOFT提出的資料庫訪問介面標準。ODBC(Open DatabaseConnectivity,開放資料庫互連)提供了一種標準的API(應用程式編程介面)方法來訪問資料庫管理系統(DBMS)。

OLEDB: OLEDB(ObjectLinking and Embedding,Database,又稱為OLE DB或OLE-DB),一個基於COM的數據存儲對象,能提供對所有類型的數據的操作。

ADO: ADOActiveXDataObjects是一個用於訪問數據源的COM組件。它提供了編程語言和統一數據訪問方式OLE DB的一個中間層。允許開發人員編寫訪問數據的代碼而不用關心資料庫是如何實現的,而只用關心到資料庫的連接。

ADO.NET: ADO雖然是比較成功的產品,但ADO本身的架構仍然有缺陷,尤其是在開髮網絡應用程式時,Recordset無法離線,嚴重影響了網路應用的開發。ADO.NET引入了離線型數據模型的概念,成功解決了ADO所不能及的問題。

關係:ODBC位於數據訪問的最底層,OLEDB次之,ADO位於最上層。我們的應用程式可以通過三種方式訪問資料庫,分別是應用程式——ODBC——資料庫,應用程式——OLEDB——ODBC——資料庫,應用程式——ADO——OLEDB——ODBC——資料庫。

 

2.ADO.NET類集合主要由五大核心組件類組成:Connection(資料庫連接)、Command(資料庫的命令)、DataReader(資料庫的讀取器)、DataSet(數據集)和 DataAdaper(資料庫的適配器)。

 

 

3. 資料庫連接

使用SqlConnection對象連接SQL Server:ConnectionString = "server=localhost;database=TestData;;User Id=danfoss;Password=danfoss;" (如果使用SQL EXPRESS, 改為server=localhost/sqlexpress)

 

                using (SqlConnection conn = new SqlConnection(ConnectionString))
                {
                    conn.Open();

                    operate database here......

                    conn.Close();
                }        

使用OleDbConneetion連接支持OLE DB的資料庫,如Access: ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Sourse = Access資料庫;UserId = 用戶名;Password = 密碼;"

確保資源釋放:1. 訪問結束時,調用close()方法; 2.利用using 語句

配置連接字元串,並使用ConfigurationManager訪問:

<configuration>
  <connectionStrings>
    <add name="conn1" connectionString="server=192.168.0.23;database=TestData;;User Id=danfoss;Password=danfoss;"/>
  </connectionStrings>
</configuration>
using System.Configuration;

String connsql = ConfigurationManager.ConnectionStrings["conn1"].ToString();

4. 資料庫執行命令

 <Provider>Command類提供了以下可執行的命令:

  • ExcuteNonQuery() ----- 執行命令,返回受影響的記錄個數,可用於update, delete, insert into 語句;
  • ExcuteReader() ------ 返回 IDataReader 讀取器;
  • ExcuteScalar()   ------ 返回結果集中的第一行第一列的值;
  • ExcuteXMLReader() ------ 僅用於SqlCommand,返回一個XmlReader對象,可以遍歷從資料庫中返回XML片段;

以ExcuteReader()讀取Sql Server為例,其他類似:

            String connsql = @"server=192.168.0.23;database=TestData;;User Id=danfoss;Password=danfoss;";
            try
            {
                using (SqlConnection conn = new SqlConnection(connsql))
                {
                    conn.Open();
                    string sqlStr = "select * from StudentInfo";
                    SqlCommand comm = conn.CreateCommand();
                    comm.CommandText = sqlStr;
                    comm.CommandType = System.Data.CommandType.Text;
                    SqlDataReader sr = comm.ExecuteReader();
                    while (sr.Read())
                    {
                        Console.WriteLine("ID:{0},Name:{1},Phone:{2},Time:{3}", sr.GetInt64(0), sr.GetString(1), sr[2], sr[3]);
                    }
sr.Close(); conn.Close(); } }
catch (Exception err) { Console.WriteLine(err.Message); } finally { }

  IDataReader是一個只能向前的讀取器,即只能沿著一個方向遍曆數據,資料庫連接會一直處於打開狀態,直到顯式關閉。若在ExecuteReader()中傳入參數CommandBehavior.CloseConnection,就可以在關閉讀取器時強制關閉資料庫連接。

  SqlDataReader 有個索引器,可以根據字元串(即資料庫表中的欄位名),數字來獲取數據,其中直接以數字索引訪問速度更快。但以索引器訪問返回的是Object ,需要類型轉換,因此還有一種更快的訪問方式,以Get開頭的一組類型安全的方法,例如GetInt32(), GetFloat(), GetString()。

 


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

-Advertisement-
Play Games
更多相關文章
  • // string data = "{\"uid\":515,\"timestamp\":\"2018 - 5 - 25 19:05:00\",\"encode\":\"3A19E9D6EAFF2FA9160ED6981EB522E1\"}"; /// <summary> /// 與適當性認證相關的 ...
  • --一本錯誤的記錄 insert into Book values('錯誤時怎樣練成的',111) --左連接 select s.name,b.name from student as s left join Book as b on s.id=b.studentid --右連接 select s. ...
  • 一般而言webservice是部署在哪台伺服器,然後它的address location就是指向哪個,但是由於有些情況處於各種原因,如網路策略,需要先訪問某個ip之後再進行跳轉到一個ip,這個時候就需要代碼控制websevice指向的IP地址了,就需要用到SoapExtensionReflector ...
  • 裝箱:值類型-->引用類型。 拆箱:引用類型-->值類型 裝箱:把值類型拷貝一份到堆里。反之拆箱。 具有父子關係 是拆裝箱的條件之一。 所以: 裝的什麼類型,拆的時候也必須是對應類型。 使用方法時看是否裝拆箱:看需要的參數和傳入的參數的集體類型。 使用泛型集合避免裝拆箱。 ...
  • MVC頁面擴展方法 單例模式 /// <summary> /// 創建一個Config內容對象 /// </summary> /// <param name=""></param> /// <param name="key"></param> /// <returns></returns> publ ...
  • 今天給大家帶來的討論主題是通過實戰經驗來對百億數據量下的多表數據查詢進行優化,俗話說的好,一切脫離業務的架構都是耍流氓,接下來我就整理一下今天早上微信群里石頭哥給大家分享的百億數據量多表查詢架構以及優化思路。由於本文內容整理自微信群,爬樓不易,整理更不易,如果有遺漏,歡迎大家在評論區留言。 作者:依 ...
  • 之前在隨筆《在Winform開發中使用Grid++報表》介紹了在Winform環境中使用Grid++報表控制項,本篇隨筆介紹在Boostrap開發框架中使用Grid++報表,也就是Web環境中使用Grid++報表,對於我上篇提到的二維碼條形碼的資產信息表,我系統通過Web方式進行呈現,或者展示其報表的... ...
  • 本文章是介紹和記錄如何創建GraphQL項目,以及如何使用GraphQL進行數據的相關操作。項目參照GraphQL .Net 的官方文檔進行實踐 一、項目結構: 為了更好的和原有的項目結合在一起,儘可能減少對原項目的修改。我對項目結構做瞭如下分層。 二、項目結構分層說明 Contracts層: 項目 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...