




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、史前那时候每个数据库供应商(其实也没几个)都有自己的数据库操作API,每个数据库的调用函数、操作语句各不相同。因此,每个应用程序只能使用一个固定的数据库,想换数据库?没门!你要全部重写应用程序中的数据库操作代码。后来国际标准化组织ISO- International Organization for Standardization、IBM等说不行,这么乱,程序员怎么活啊!于是提出了CLI(Call-Level Interface)。每个数据库的CLI(驱动程序)基本上相同,程序员总算好过点了。可是要换数据库,你写的程序需要重新编译或安装。再后来MS的ODBC(Open DataDase Con
2、nectivity,开放数据库互连)来了,并一度成为数据库通信的标准。ODBC它将所有对数据库的底层操作(即CLI)全部隐藏在ODBC的驱动程序内核里。使用时,ODBC会动态装载各个数据库的CLI,把函数调用转换成对每个数据库的CLI调用。此时,数据库应用程序总算和数据库供应商没什么关系了。(图形ODBC)再再后来在一切“对象化”的趋势下, MS提出了OLE DB(Object Linking and Embedding DB,对象连接和嵌入(法)数据库),并打算用它取代ODBC。OLE DB也需要每个数据库提供一个CLI(现在叫Provider)。OLE DB标准的核心内容就是要求各种数据存
3、储都提供一种相同的访问接口。这种接口封装了各种数据系统的访问操作,使数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。因此,OLE DB标准实际上是规定了数据使用者和提供者之间的一种应用层的协议(Application-Level protocol)。它可以访问的数据包括标准的关系型数据库中的数据,还包括邮件数据、Web上的文本或图形、目录服务,以及主机数据库(如DB2)、服务器数据库(如Oracle和SQL Server)和桌面数据库(如Access)。OLE DB分两种:直接的OLE DB:只要提供了Provider的数据库都能使用。面向OD
4、BC的OLE DB:为让那些只提供有ODBC而无Provider的数据库也可以通过OLE DB访问,MS提供了一个面向ODBC的Provider。不过因为要经过两层,效率会稍微降低。所以现在多数数据库会提供自己的Provider。再再再后来MS说OLE DB的接口还是太复杂了。程序员也就调调QUERY,没必要搞这么复杂吧!于是提出了ADO。ADO其实只是一个应用程序层次的接口,它通过在OLE DB上封装来简化使用方法,实现与数据库通信,从而更好的解放了程序员在操作数据库时的麻烦。ADO可处理各种OLE DB支持的数据源。新世纪到了MS也发明了.NET,为了适应新世纪新潮流也提出了ADO.NET
5、,这部分的有待学习。不过我感觉还是在原ADO上面继续封装吧。-ODBC详解:如图所示,应用程序通过ODBC接口访问不同数据源中的数据,每个不同的数据源类型由一个驱动程序支持。驱动程序管理器自动为应用程序装入合适的驱动程序,大大简化了对数据库的访问,也为程序的跨平台开发和移植提供了极大的方便。ODBC可对大多数类型数据库提供支持,包括dBase、Informix、Access、SQL Server和Oracle等,还可对一些其他类的数据库文件提供支持,如文本、Excel电子表格等。对于MS ODBC还不支持的一些特殊数据库,只要安装数据库厂商提供的ODBC程序,也能在程序中直接对数据库进行操作。
6、由图可知,ODBC由ODBC与应用程序的接口、驱动程序管理器、驱动程序和具体的数据源(DSN)等部分组成。其中,数据库驱动程序使用数据源定位和标识具体的ODBC能兼容的数据库,而具体的数据源则需要创建。在windows系统中,可通过控制面板中的“ODBC数据源”管理器创建DSN,也可使用连接字符串如conn="DRIVER=SQL SERVER;SERVER=servername;UID=xx;PWD=xxx"创建临时DSN,实现与数据库的连接。ODBC数据源管理器中提供三种DSN,它们的区别很简单:用户DSN只能供创建该DSN的用户在当前机器中使用。因此ASP等
7、远程操作不能使用它。系统DSN允许任何有登陆权限的用户访问。因此,供Web应用程序访问时,通常建立系统DSN。文件DSN和系统DSN的区别只在于连接信息的存放位置不同:系统DSN信息保存在OS注册表中,而文件DSN则放在后缀名为dsn的一个文本文件中。因此,文件DSN的优点是便于和对应的数据库以及应用程序一起移植,而系统DSN的优点则是便于修改。-在asp中的连接方法对比:使用ODBC时,写法如下: 用系统DSN:connstr="DSN=DSNname; UID=xx; PWD=xxx;DATABASE=dbname" 用文件DSN:connstr=&
8、quot;FILEDSN=xx;UID=xx; PWD=xxx;DATABASE=dbname" 用连接字符串(不用建立DSN):conn=" Driver =SQL SERVER;SERVER=servername;UID=xx;PWD=xxx" conn="Driver=microsoft odbc for oracle;server=oramr;uid=mr;pwd=mr"conn="Driver=Microsoft Excel Driver (*.xls);DriverId=790; Dbq="+
9、server.mappath("mrdb.xls")conn="Driver=Microsoft Text Driver (*.txt; *.csv); Dbq="+server.mappath(".")+"Extensions=asc,csv,tab,txt; Persist Security Info=False"使用OLE DB时,写法如下:conn="Provider=SQL OLE DB; Data source=servername;UID=xx;PWD=xxx;Database=dbname
10、" conn="Provider=Microsoft.jet. OLEDB.4.0; Data source =c:abcabc.mdb" 性能对比: sql
11、60; access OLE DB DSN OLE DB DSN 连接时间:
12、0; 18 82 62 99查询1,000条记录: 100 150
13、160;2900 5400 显然,OLE DB链接方式相对于DSN有很大的优势.购买虚拟主机的小站,大多是php+mysql或者asp+access的组合,一般没有DSN数据源的配置,而且我们也不需要.同时mssql是一种昂贵的数据库,如果使用效率低下的access,我们应该尽量的减少数据库引擎的压力.我经常看见一些站点给出提示:数据库连接失败,显然,又是access出毛病了.这两者在性能上也有一定的差别.下面是一个测试文件,对两者进行比较.<%dim openmode,action,
14、db,openstr,rs,connopenmode=request.QueryString("openmode")action=request.QueryString("action")db="#niceidea.mdb"set conn=server.createobject("adodb.connection")if openmode="OLE DB" then openstr="provider=microsoft.jet.OLE DB.
15、4.0;" & "data source = " & server.mappath(db)if openmode="odbc" then openstr="Driver=Microsoft Access Driver (*.mdb);DBQ=" &Server.Mappath(db) Dim strStartTimeDim
16、;strEndTimestrStartTime = Timer '开始时间'反复打开数据库50次if action="open" thenfor i=1 to 50conn.open(openstr)conn.closenextset conn=nothingend if'移动记录集10000次if action="move" thenconn.open(openstr)set rs=conn.exec
17、ute("select * from visitor")for i=1 to 10000rs.movenextnextrs.closeset rs=nothingconn.closeset conn=nothingend if'反复打开记录集1000次if action="getrs" thenconn.open(openstr)set rs=server.CreateObject("adodb.recordset&q
18、uot;)dim sqlstrsqlstr="select * from visitor"for i=1 to 1000rs.open sqlstr,conn,1,1rs.closenextset rs=nothingconn.closeset conn=nothingend if%><html><head><meta http-equiv="Content-Type" content=&q
19、uot;text/html; charset=gb2312"><title>数据库链接方式测试</title></head><body><ul> <li><a href="test.asp?openmode=odbc&action=open">odbc打开数据库50次</a></li> <li><a href="test.asp?openmode=OLE DB&
20、;action=open">OLE DB打开数据库50次</a></li> <li><a href="test.asp?openmode=odbc&action=move">odbc移动记录10000次</a></li> <li><a href="test.asp?openmode=OLE DB&action=move">OLE DB移动记录10000次</a></li&
21、gt; <li><a href="test.asp?openmode=odbc&action=getrs">odbc打开记录1000次</a></li> <li><a href="test.asp?openmode=OLE DB&action=getrs">OLE DB打开记录1000次</a></li> </ul><p><%' 加载完毕的时间strEndTime = TimerResponse.Write ("运行处理时间: ")Response.Write 1000*(strEndTime - strStartTime)Response.Write (" 毫秒.")response.end%></p></body></html>得到的数据如下:odbc反复打开数据库50次:6062.5 毫秒.OLE DB反复打开数据库50次:46
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 逻辑协议书模板
- 合伙开公司协议书
- 人事代理与招聘服务协议
- 烽火通信协议书
- 进出口涉外合同协议
- 专业艺术品采购与存储服务协议
- 湾区投资协议书
- 透明膜质保合同协议
- 送水工劳务合同协议
- 车辆转入协议书范本
- 一年级100以内进位加法口算题
- DB11 509-2017 房屋建筑修缮工程定案和施工质量验收规程
- 《特殊教育概论》考试试题及答案(完整版)
- 农田水利渠道灌溉节水改造工程设计施工方案
- 幼儿园小班绘本:《小黑捉迷藏》 课件
- 《宿舍楼安全评价》word版
- 【儿童绘本故事PPT】《鲸鱼》
- 石油知识-石油地球物理勘探
- 承包商(外来施工人员)入厂安全培训教学内容课件
- 心脑血管疾病基础知识-课件(演示)教学文案
- 农产品贮藏与加工实验
评论
0/150
提交评论