.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

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->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数据类型的通路。 

作为微软的组件对象模型(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(应用程序编程接口)方法来访问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利用 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

.NET连接数据库方式,布布扣,bubuko.com

时间: 2024-10-10 12:33:55

.NET连接数据库方式的相关文章

jdbc各种连接数据库方式

1.Oracle8/8i/9i数据库(thin模式)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();String url="jdbc:oracle:thin:@localhost :1521:orcl";//orcl为数据库的SIDString user="test";String password="test";Connection conn= D

ipv6下jdbc的连接数据库方式

ipv6下jdbc的连接数据库方式 MySQL: ipv4 Driver URL:           jdbc:mysql://127.0.0.1:3306/database   ipv6 Driver URL:  jdbc:mysql://address=(protocol=tcp)(host=fe80::a00:27ff:fec3:87c7)(port=3306)/database  驱动要求:jdbc连接驱动需要大于5.1.31以上,之前我没注意到这个问题,一直使用项目上统一的5.1.6

MySQL 简洁连接数据库方式

OS  :   CentOS 6.3 DB  :  5.5.14 MySQL连接数据库的方式很多: 1.[[email protected] bin]# ./mysql -uroot -p 2.[[email protected] bin]# ./mysql -uroot -p -h127.0.0.1 3.[[email protected] ~]# su - mysql    [[email protected] ~]$ mysql -uroot -S /export/servers/mysq

Jmeter连接数据库方式

关系型数据库: 1.mysql: 方式:Database URL:jdbc:mysql://localhost:port/DBname?user=**&password=**&allowMultiQueries=true JDBC Driver class:com.mysql.jdbc.Driver 需要用到的第三方包:mysql-connector-java-5.1.39-bin.jar 2.sqlserver 方式:Database URL:jdbc:sqlserver://local

连接数据库方式

1,使用org.springframework.jdbc.datasource.DriverManagerDataSource 说明:DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <proper

VB6动态连接数据库模板

最近接到一个任务--迁移数据库 要迁移的数据库是SQL2005数据库,有两个应用软件是与此数据库进行数据通信.由于客户端应用程序的连接数据库方式直接以绝对方式写入程序,所以此次迁移需要同时修改客户端应用程序,考虑到不久后公司地址要变动,到时还要重新配置服务器,肯定还要修客户端代码,于是我打算采用模板的方式,将应用程序修改成动态连接数据库,那么后续迁移数据将不需要修改应用程序的代码,只需要修改配置文件即可. 思路:增加一个配置文件setup.ini,固定setup.ini的数据格式,编写一个读取s

使用django连接数据库 对数据库 增删改查

如果路由访问的时候出现 就把项目中的注释掉 登录功能 1 路由访问如果不加斜杠 会内部自动重定向加斜杠的路由 所有的静态文件(css,js,前端第三方类库)默认都放在static文件下 #静态文件配置 STATIC_URL = '/static/' #这个是创建项目的时候django已经帮你创建好了 # 静态文件配置 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] # 暴露给外界能够访问服务器静态文件夹下面所有的资源 STATIC_U

mongodb 常用命令

转自http://www.blogjava.net/waterjava/archive/2011/03/23/346819.html 命令行 --help 显示命令行参数 --nodb 不连接数据库方式启动,稍后可以使用 new Mongo() 或 connect() 来建立连接 --shell 从命令行运行完一个 .js 文件后,停留在shell中,而不是结束 特殊命令 非JavaScript的辅助指令: help 显示帮助 db.help() 显示 db 方法帮助 db.myColl .he

hbase出大事了!!!!!!

图1     java操作hbase,连接数据库方式如图1     然后问题来了!!!!!!!!!!!! 从开始连接数据库到连接完毕(HTable h=new HTable(config,tablename))竟然用了20秒...发生了什么???? 图2 图3 再看看之后getscanner.用了9秒,经过几次测试发现不管是取10条还是10000条还是100W条,都是9秒!!!!!!! 求大神指点!这是哪出问题了,怎么解决??