.NET串連資料庫方式

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   使用   os   io   

.NET串連資料庫方式

1、串連Oracle

一  OracleClient方式,是微軟專門針對Oracle資料庫開發的(通常情況使用)
  引用類庫:System.Data.OracleClient.dll
  命名空間:System.Data.OracleClient
  常用類:OracleConnection、OracleCommand、OracleDataAdapter、OracleTransaction、OracleDataReader等
  連接字串:“data source=**【網路設定服務名】;user id=**;password=** 【表所在的使用者和密碼】”(注意:可以不指定 provider 驅動)

二 OleDb方式
     引用類庫:System.Data.dll
  命名空間:System.Data.OleDb
  常用類:OleDbConnection、OleDbCommand、OleDbDataAdapter、OleDbTransaction、OleDbDataReader等。 
  連接字串:與OracleClient方式相比,要添加一個provider,“provider=MSDAORA.1;”
     短板:處理複雜SQL、Blob欄位

三  oracle 提供的Oracle Data Provider for .NET(ODP.net)
    引用類庫:Oracle.DataAccesss.dll 【安裝oracle for .net的安裝包Oracle Data Provider for .NET】
    命名空間:Oracle.DataAccess.Client和Oracle.DataAccess.Types【Oracle.DataAccess.Client用於設定資料庫的串連等等通用功能,Oracle.DataAccess.Types用於設定

 

2、串連SQL Server

ADO,ADO.NET,OLEDB,ODBC一. ADO

      ADO (ActiveX Data Objects) 是一個用於存取數據源的COM組件。它提供了程式語言和統一數據訪問方式OLE DB的一個中間層。允許開發人員編寫訪問數據的代碼而不用關心資料庫是如何實現的,而只用關心到資料庫的連接。訪問資料庫的時候,關於SQL的知識不是必要的,但是特定資料庫支援的SQL命令仍可以通過ADO中的命令對象來執行。

 

架構

      ADO被設計來繼承微軟早期的數據訪問對象層,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。ADO在1996年冬被發布。

ADO包含一些頂層的對象:

  • 連接(Connection),代表到資料庫的連接
  • 記錄集(Recordset),代表資料庫記錄的一個集合
  • 命令(Command),代表一個SQL命令
  • 記錄(Record),代表數據的一個集合
  • 流(Stream),代表數據的順序集合
  • 錯誤(Error),代表資料庫訪問中產生的意外
  • 欄位(Field),代表一個資料庫欄位
  • 參數(Parameter),代表一個SQL參數
  • 屬性(Property),儲存對象的資訊

ADO組件的使用需要利用支援COM的高級語言,例如ASP中的VBScript或者Visual Basic.

 

 

準系統

使用 ADO 存取資料的一些基本步驟:

  1. 產生一個連結物件去連結資料庫(Create a connection object to connect to the database.)
  2. 產生一個recordset物件來取得資料(Create a recordset object in order to receive data in.)
  3. 開啟一個連結(Open the connection)
  4. 在recordset中完成SQL語法的描述(Populate the recordset by opening it and passing the desired table name or SQL statement as a parameter to open function.)
  5. Do all the desired searching/processing on the fetched data.
  6. 確定改變資料(Commit the changes you made to the data (if any) by using Update or UpdateBatch methods.)
  7. 關閉recordset(Close the recordset)
  8. 關閉連結(Close the connection)

 

範例Code Private Function exist(pTile As String) As Boolean     Dim strsql As String     strsql = "select 1 from G_SRP_INFO where tile=‘" & pTile & "‘"           Dim intRSOpenType As Integer         If madoCN Is Nothing Then         Exit Function     End If         Dim adoRS As ADODB.Recordset     Set adoRS = New ADODB.Recordset     intRSOpenType = adOpenStatic         adoRS.CursorLocation = adUseClient     adoRS.Open strsql, madoCN, intRSOpenType, adLockOptimistic     If CStr(adoRS(0)) = "1" Then         exist = True     Else         exist = False     End If End Function

 

 

二. ADO.NET

      ADO.NET是微軟在.NET Framework中負責資料存取的類別庫集,它是使用在COM時代奠基的OLE DB技術以及.NET Framework的類別庫和程式語言來發展的,它可以讓.NET上的任何程式語言能夠連接並存取關聯式資料庫與非資料庫型資料來源(例如XML,Excel或是文字檔資料),或是獨立出來作為處理應用程式資料的類別物件,其在.NET Framework中的地位是舉足輕重,許多人將ADO.NET視為ADO的下一個版本,但其實它是一個全新的架構、產品與概念。

 

架構

      ADO.NET對象模型(object model)有五個主要的對象,分別是Connection對象,Command對象,DataAdpter對象,Dataset對象以及DataReader對象.這些對象中負責建立連線和數據操作的部分我們稱為‘數據操作對象’(Managed Provider),分別由Connection對象,Command對象,DataAdpter對象以及DataReader對象所組成。數據操作對象最主要是當作Dataset對象以及數據源之間的橋梁,負責將數據源中的數據取出後存入Dataset對象中管理,以及將數據存回數據源的工作。

  1. Connection對象 : 可以開啟程式和數據源之間的連接。沒有利用connection對象將數據源打開,則無法從數據源中取得數據。
  2. Command對象: 用來對數據源發出指令,如對數據源下達查詢,新增,修改,刪除數據等指令.
  3. DataAdpter對象: 主要是在數據源以及Dataset之間執行資料傳輸的工作,它可以透過command下達命令後,將取得的資料存入dataset中管理。
  4. Dataset對象: 可以視作一個緩沖區(cache),可以把從數據源中所查詢得到的資料保留起來,甚至可以將整個數據源內的資料顯示出來。它不但可以儲存多個table,還可以透過DataAdpter對象取得一些如主鍵等的數據表結構,並可以記錄表間的關聯。
  5. DataReader對象: 若只需要循序讀取數據源中的資料而不需要其他動作,可以使用DataReader對象。DataReader對象讀取是一次一筆,向下循序讀取數據源中的資料,而且被DataReader對象所趨會的數據是唯讀的(read only),並不允許作其他動作。

 

各組件之間的關係所示:

 

 

ADO.NET和ADO的差異

      對於 ADO 的開發人員來說,最明顯的變化在於以往 ADO 中的 Recordset 消失了,並且明確的分開為連線型的 DataReader 以及離線型的 DataSet 與 DataTable,並且發展支援離線型資料來源的瀏覽工具 DataView, 這樣的改變,讓習慣使用 ADO 的 VB/ASP 開發人員會有某種程度的不習慣,同時讓 ADO.NET 的學習會較 ADO 有較些許的複雜性,因此有部分新入門或是VB 6.0/ASP開發人員會在學習.NET Framework或是使用VB.NET開發應用程式時,在 .NET Framework 中使用 ADO 來連接資料來源。但在 .NET Framework 應用程式使用 ADO 的話,.NET Framework會因為要多一層COM和.NET資料之間的轉換,會讓應用程式效能有少部分的損耗。

 

 

三. OLD-DB

      是微軟的戰略性的通向不同的資料來源的低級應用程式介面。OLE DB不僅包括微軟資助的標準資料介面開放資料庫連通性(ODBC)的結構化查詢語言 (SQL)(SQL)能力,還具有面向其他非SQL資料類型的通路。 

      作為微軟的元件物件模型(COM)的一種設計,OLE DB是一組讀寫資料的方法(在過去可能被稱為渠道)。OLD DB中的對象主要包括資料來源對象、階段對象、命令對象和行組對象。使用OLE DB的應用程式會用到如下的請求序列: 初始化OLE 串連到資料來源、發出命令、處理結果、釋放資料來源對象並停止初始化OLE

      Object Linking and Embedding,對象串連與嵌入,簡稱OLE技術。OLE不僅是傳統型應用程式整合,而且還定義和實現了一種允許應用程式作為軟體“對象”(資料集合和操作資料的函數)彼此進行“串連”的機制,這種串連機制和協議稱為組件物件模型。

     OLE 是一種物件導向的技術,利用這種技術可開發可重複使用的軟體組件(COM)。 DB(英文全稱data base,資料庫)是依照某種資料模型組織起來並存放二級儲存空間中的資料集合。
     OLE DB 將傳統的資料庫系統劃分為多個邏輯組件,這些組件之間相對獨立又相互連信。這種組件模型中的各個部分被冠以不同的名稱:
  1.     資料提供者(Data Provider): 提供資料存放區的軟體組件,小到普通的文字檔、大到主機上的複雜資料庫,或者電子郵件儲存,都是資料提供者的例子。有的文檔把這些軟體組件的開發商也稱為資料提供者。
  2.     資料服務提供者(Data Service Provider):位於資料提供者之上、從過去的資料庫管理系統中分離出來、獨立啟動並執行功能組件,例如查詢處理器和遊標引擎(Cursor Engine),這些組件使得資料提供者提供的資料以表狀資料(Tabular Data)的形式向外表示(不管真實的物理資料是如何組織和儲存的),並實現資料的查詢和修改功能。SQL Server 7.0 的查詢處理常式就是這種組件的典型例子。
  3.     業務組件(Business Component): 利用資料服務提供者、專門完成某種特定商務資訊處理、可以重用的功能組件。分散式資料庫應用系統中的中介層(Middle-Tier)就是這種組件的典型例子。
  4.     資料消費者(Data Consumer): 任何需要訪問資料的系統程式或應用程式,除了典型的資料庫應用程式之外,還包括需要訪問各種資料來源的開發工具或語言。

 

 

OLE DB 與ODBC 的關係

     由於OLE DB 和ODBC 標準都是為了提供統一的訪問資料介面,所以曾經有人疑惑:OLE DB 是不是替代ODBC 的新標準?答案是否定的。實際上,ODBC 標準的對象是基於SQL 的資料來源(SQL-Based Data Source),而OLE DB 的對象則是範圍更為廣泛的任何資料存放區。從這個意義上說,符合ODBC 標準的資料來源是符合OLE DB 標準的資料存放區的子集。符合ODBC 標準的資料來源要符合OLE DB 標準,還必須提供相應的OLE DB 服務程式(Service Provider),就像SQL Server 要符合ODBC 標準,必須提供SQL Server ODBC 驅動程式一樣。現在,微軟自己已經為所有的ODBC 資料來源提供了一個統一的OLE DB 服務程式,叫做ODBC OLE DB Provider。

  ODBC OLE DB Provider 發布之後,有人又擔心:ODBC Provider 是不是在ODBC 之上的新的層次(Layer)?如果是,那麼使用OLE DB 訪問ODBC 資料來源是否將影響效能?答案也是否定的。實際上,ODBC Provider 的作用,是替換ODBC Driver Manager,作為應用程式與ODBC 驅動程式之間的橋樑,理論上不會增加任何開銷。

 

四、 ODBC

     ODBC(Open Database Connectivity,開放資料庫互連)提供了一種標準的API(API)方法來訪問DBMS(Database Management System)。這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支援,使用者可以直接將SQL語句送給ODBC。ODBC的設計者們努力使它具有最大的獨立性和開放性:與具體的程式設計語言無關,與具體的資料庫系統無關,與具體的作業系統無關。微軟公司在1993年以DLL集的方式發布了世界上第一個ODBC產品,現在成為了微軟開放服務結構(WOSA,Windows Open Services Architecture)中,有關資料庫的一個組成部分。微軟的ODBC產品其實就是一個ODBC的驅動管理器,提供一個ODBC應用程式到某種ODBC驅動的介面。在UNIX系統上,有兩個開源的ODBC驅動管理器,unixODBC和iODBC。

     ODBC(Open Database Connectivity,開放資料庫互連)是微軟公司開放服務結構(WOSA,Windows Open Services Architecture)中有關資料庫的一個組成部分,它建立了一組規範,並提供了一組對資料庫訪問的標準API(API)。這些API利用 SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支援,使用者可以直接將SQL語句送給ODBC。
    一個基於ODBC的應用程式對資料庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的資料庫操作由對應的DBMS的ODBC驅動程式完成。也就 是說,不論是FoxPro、Access還是Oracle資料庫,均可用ODBC API進行訪問。由此可見,ODBC的最大優點是能以統一的方式處理所有的資料庫。
一個完整的ODBC由下列幾個組件組成:

  •     應用程式(Application)。
  • ODBC管理器(Administrator): 該程式位於Windows 95控制台(Control Panel)的32位ODBC內,其主要任務是管理安裝的ODBC驅動程式和管理資料來源。
  •     驅動程式管理器(Driver Manager): 驅動程式管理器包含在ODBC32.DLL中,對使用者是透明的。其任務是管理ODBC驅動程式,是ODBC中最重要的組件。
  • ODBC API。
  • ODBC 驅動程式: 是一些DLL,提供了ODBC和資料庫之間的介面。
  •     資料來源:資料來源包含了資料庫位置和資料庫類型等資訊,實際上是一種資料連線的抽象。

應用程式要訪問一個資料庫,首先必須用ODBC管理器註冊一個資料來源,管理器根據資料來源提供的資料庫位置、資料庫類型及ODBC驅動程式等資訊,建立起ODBC與具體資料庫的聯絡。這樣,只要應用程式將資料來源名提供給ODBC,ODBC就能建立起與相應資料庫的串連。
在ODBC中,ODBC API不能直接存取資料庫,必須通過驅動程式管理器與資料庫交換資訊。驅動程式管理器負責將應用程式對ODBC API的調用傳遞給正確的驅動程式,而驅動程式在執行完相應的操作後,將結果通過驅動程式管理器返回給應用程式。
在訪問ODBC資料來源時需要ODBC驅動程式的支援。用Visual C++ 5.0安裝程式可以安裝SQL Server、 Access、 Paradox、 dBase、 FoxPro、 Excel、 Oracle 和Microsoft Text等驅動程式.在預設情況下,VC5.0隻會安裝SQL Server、 Access、 FoxPro和dBase的驅動程式.如果使用者需要安裝別的驅動程式,則需要重新運行VC 5.0的安裝程式並選擇所需的驅動程式。

 

五,各組件之間的關係所示:

 

  微軟提供了以下四種資料庫連接方式:

  System.Data.OleDb.OleDbConnection

  System.Data.SqlClient.SqlConnection

  System.Data.Odbc.OdbcConnection

  System.Data.OracleClient.OracleConnection

 

http://blog.csdn.net/stone0419/article/details/1783537

http://www.cnblogs.com/upDOoGIS/archive/2009/09/12/1565438.html

http://www.cnblogs.com/iswszheng/archive/2009/05/19/1460052.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.