数据库访问接口(ODBC,OLEDB,ADO)
目录
- 数据库访问接口发展历史
- ODBC、OLEDB和ADO之间的关系
- VB脚本下的数据库接口代码示例
- 在SQL Server中通过链接服务器查询OLE DB数据源
- 在SQL Server中直接查询OLE DB数据源
数据库访问接口发展历史
ODBC历史
ODBC(Open Database Connectivity,开放数据库互连)。要了解ODBC是什么,先了解一下数据库连接的相关知识。在最开始连接数据库时,由于数据库种类繁多,各种数据库连接有不同的需求,这个时期,数据库连接主要依靠各种API函数来进行连接。在这种背景下,微软于1992年发表了ODBC, ODBC就是将这些API函数封装起来形成统一的接口。当SQL语句进入接口后,驱动器管理程序将它们送入对应的驱动器(driver),由驱动器将SQL语句送入各种不同的数据库。
OLE DB历史
OLE DB(Object Linking and Embedding, Database,对象链接嵌入数据库)是微软为以统一方式访问不同类型的数据存储设计的一种应用程序接口。OLE DB 是建立在 ODBC 功能之上的一个开放规范。ODBC 是为访问关系型数据库而专门开发的,OLE DB 则用于访问关系型和非关系型信息源。OLE DB可以通过ODBC连接到数据库,也可以直接连接到数据库,并且直接连接的访问速度更快。可以知道,只要支持ODBC的数据源是一定能够支持OLEDB的,但是反过来则不一定。
ADO历史
ADO(ActiveX Data Objects,ActiveX 数据对象)在1996年8月与OLE DB一起被发布,是在OLE DB上面创建的一个新的统一的数据访问的高层对象模型。ADO推出后顺利的取代了微软早期的数据访问对象层(包括RDO(Remote Data Objects)和DAO(Data Access Objects))。ADO将OLE DB的对象模型进一步简化,由数据库厂商开发满足OLE DB接口的数据提供者(data provider),而ADO本身则是与数据源无关(data source independent)的对象结构,这使得ADO通用性极好。
ODBC、OLEDB和ADO之间的关系
VB脚本下的数据库接口代码示例
OLEDB连接
标准安全模式(Standard Security)
- dim conn, sCon
- set conn=server.CreateObject("ADODB.Connection")
- sCon="Provider=SQLOLEDB;Data Source=(local); Initial Catalog =dbname;User ID=sa;Password=123"
- conn.open(sCon)
信任连接(Trusted connection)
- dim conn, sCon
- set conn=server.CreateObject("ADODB.Connection")
- sCon="Provider=SQLOLEDB; Integrated Security=SSPI; Persist Security Info=False;Data Source=(local); Initial Catalog =dbname"
- conn.open(sCon)
ODBC连接
通过系统数据源(System DSN)连接
先注册数据源:DSN。打开管理工具 -> 数据源(ODBC) -> 打开系统DSN选项卡 -> 单击添加按钮 -> 从列表中选择SQL Server,单击完成 -> 在名称中输入数据库名称,在你想连接的SQL Server服务器中输入(local)-> 按向导提示完成。
- dim conn, sCon
- set conn=server.CreateObject("ADODB.Connection")
- sCon="DSN=注册名;Uid=sa;Pwd=123"
- conn.open(sCon)
通过ODBC驱动程序连接
- dim conn, sCon
- set conn=server.CreateObject("ADODB.Connection")
- sCon="Driver={SQL Server};Server=(local); Uid=sa;Pwd=123;Database=dbname"
- conn.open(sCon)
在SQL Server中通过链接服务器查询OLE DB数据源
创建链接服务器
配置链接服务器使SQL Server数据库引擎能够访问SQL Server实例之外的OLE DB数据源。
在SQL Server Management Studio中,打开对象资源管理器,展开“服务器对象”,右键单击“链接服务器”,然后单击“新建链接服务器”。
在“常规”页中,“链接服务器”一栏中为链接服务器命名,并填入其他信息。
对链接数据库查询
在指定的链接服务器上执行传递查询。语法如下 :
- OPENQUERY ( linked_server ,'query' )
参数:
- linked_server:表示链接服务器名称的标识符。
- ' query ':在链接服务器中执行的查询字符串。该字符串的最大长度为 8 KB。
OPENQUERY 可以在查询的 FROM 子句中引用,就好象它是一个表名
- SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
在SQL Server中直接查询OLE DB数据源
通过OPENDATASOURCE()函数直接查询OLE DB数据源,语法如下:
- OPENDATASOURCE ( 'provider_name', 'init_string' )
示例如下:
- SELECT GroupName, Name, DepartmentID
- FROM OPENDATASOURCE('MSOLEDBSQL', 'Server=Seattle1;Database=AdventureWorks2016;TrustServerCertificate=Yes;Trusted_Connection=Yes;').HumanResources.Department
- ORDER BY GroupName, Name;
数据库访问接口(ODBC,OLEDB,ADO)的更多相关文章
- 数据库访问接口(ODBC、OLE DB、ADO)
最近在学C#的数据库编程,对于数据库接口技术这块的知识一直比较模糊,网上查了不少资料,看了几天还是朦朦胧胧的,只能做些笔记再研究了. 我们都知道,“数据库”是指一组相关信息的集合,最早的计算机应用之一 ...
- 数据库访问接口之ODBC
ODBC API 实现数据库操作的手段是句柄.在ODBC中,使用不同的句柄(HANDLE)来标志环境(environment).连接(Connection).语句(statement).描述符(des ...
- 【转载】ODBC, OLEDB, ADO, ADO.Net的演化简史
原文:ODBC, OLEDB, ADO, ADO.Net的演化简史 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->ODBC->OLEDB->ADO->ADO.N ...
- ODBC, OLEDB, ADO, ADO.Net的演化简史
ODBC, OLEDB, ADO, ADO.Net的演化简史 Copy&Paste了一下午,终于一蹴而就此文,嘿嘿... 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->O ...
- ODBC, OLEDB, ADO, ADO.NET
在SSIS中,选择Connction Manager时,有很多的类型.其中会发现如下4个连接类型ODBC, OLEDB, ADO, ADO.NET.这4个东东到底是什么,他们有什么关联,什么区别,如何 ...
- c++ 11 是如何简化你的数据库访问接口的
之前写过一篇文章专门分析了 c++ 模板编译过程中报的一个错误:<fatal error C1045: 编译器限制 : 链接规范嵌套太深 >,其中涉及到了 qtl -- 一个使用 c++ ...
- 数据库访问技术 odbc dao rdo uda jet oledb
一.UDA(UniversalDataAccess) 这是微软提供的通用数据访问策略.包括ADO.OLEDB和ODBC.它不光提供了数据库的访 问能力,对于其它的数据存储技术也同样支持,如目录服务.E ...
- 第20章 HOOK和数据库访问
转自: https://blog.csdn.net/u014162133/article/details/46573873 通过安装Hook过程,可以用来屏蔽消息队列中某些消息 The SetWind ...
- SQL Server 提供的各种数据访问接口
在创建SQL Server的链接服务器时,可以看到有如下几种访问接口,其中我们常用的只有1.3.4.6.其中4是安装Oracle客户端才会出现的接口,3.6是由于我电脑上装了2008R2和2012两个 ...
随机推荐
- C language bit byte and word
bit:The smallest storage unit of a computer byte:Common computer storage unit word:Computer natural ...
- 大疆无人机 Android 开发总结——视频解码
DJI_Mobile_SDK是大疆为开发者提供的开发无人机应用的开发接口,可以实现对无人机飞行的控制,也可以利用无人机相机完成一些视觉任务.目前网上的开发教程主要集中于DJI 开发者社区,网上的资源非 ...
- 使用 docker 部署常用的开发环境
使用 docker 部署常用的开发环境 Intro 使用 docker,很多环境可以借助 docker 去部署,没必要所有的环境都在本地安装,十分方便. 前段时间电脑之前返厂修了,回来之后所有的软件都 ...
- MySQL数据库:group分组
group by:分组 GroupBy语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)".它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后 ...
- Fail-fast
实际上,java.util.Iterator 的大多数实现都提供了故障快速修复(Fail-fast)的机制 ⎯⎯在利用迭代器遍历某一容器的过程中,一旦发现该容器的内容有所改变,迭代器就会抛出 Conc ...
- WPF 中 Path 使用虚线
效果如下: 上图由两个圆弧组成,代码如下: <!--红色的实线圆弧,旋转200度,顺时针,获取大圆弧--> <Path Data="M 50,200 A 100,100 2 ...
- day99_12_3numpy的索引以及pandas的两个数据结构。
一.索引与切片. nump的索引和python中的索引差不多,都是左开右闭区间. 如一个普通的array的索引,是由0开始的: res = np.array([1,2,3,4,5]) #### npa ...
- 数据、模型、IT系统认知
数据.模型.IT系统认知 量化投资定义 量化投资主要是指通过数理模型来实现投资理念,由计算机产生交易策略的一种投资方法. 量化投资是一种方法论,而不是具体的交易策略. 通常与基本面.技术面分析相结合. ...
- python通过多线程并获取返回值
以下是多线程获取返回值的一种实现方式 # -*-coding:utf-8-*- from time import ctime, sleep import threading import numpy ...
- Python 从入门到进阶之路(二)
之前的文章我们对 Python 语法有了一个简单的认识,接下来我们对 Python 中的 if while for 做一下介绍. 上图为 if 判断语句的流程,无论任何语言,都会涉及到判断问题,if ...