ODBC 是一种底层的访问技术.doc_第1页
ODBC 是一种底层的访问技术.doc_第2页
ODBC 是一种底层的访问技术.doc_第3页
ODBC 是一种底层的访问技术.doc_第4页
ODBC 是一种底层的访问技术.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ODBC 是一种底层的访问技术,因此,ODBC API 可以是客户应用程序能从底层设置和控制数据库,完成一些高级数据库技术无法完成的功能;但不足之处由于ODBC只能用于关系型数据库,使得利用ODBC很难访问对象数据库及其他非关系数据库。DAO 提供了一种通过程序代码创建和操纵数据库的机制。最大特点是对MICROSOFT JET数据库的操作很方便,而且是操作JET数据库时性能最好的技术接口之一。并且它并不只能用于访问这种数据库,事实上,通过DAO技术可以访问从文本文件到大型后台数据库等多种数据格式。ADO 是基于OLE DB的访问接口,它是面向对象的OLE DB技术,继承了OLE DB的优点。属于数据库访问的高层接口。-访问接口易用性运行性能可扩展性突出特点 能否访问非关系数据源技术层次-ODBC差较高差可进行底层控制否 底层-MFC ODBC好一般通用标准,应用广泛 否 高层-MFC DAO 好较高一般访问JET性能最好能 高层-OLE DB较难高好可访问非关系DB 能 底层-ADO 最好高好可访问非关系,有多种编程接口 能 高层- 名词解释:l ODBC(Open DataBase Connectivity)开放数据库互联。是由微软主导的数据库链接标准。l MFC(Microsoft Foundation Class)微软基础类。MFC ODBC是对ODBC的封装。l DAO(Data Access Object)数据访问对象。不提供远程访问功能。l RDO(Remote Data Object)远程数据对象。速度快,支持SQL Server存储过程,同DAO一样是发展很多年了的技术。l OLE-DB(Object Linking and Embedding DataBase)对象链接和嵌入数据库。它依赖于COM和提供OLE DB提供者的厂商而非ODBC使用的SQL。l ADO(ActiveX Data Object)ActiveX数据对象。基于OLE-DB建立连接的局部和远程数据库访问技术。同OLE-DB一样要“年轻”些。使用中,我们一般用OLE-DB和ADO替代DAO和RDO。另外,ADO和OLEDB之间的关系为:l OLEDB是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO-技术的应用程序或用于C+的开发者开发定制的数据库组件。l ADO 是基于OLE DB的访问接口,它是面向对象的OLE DB技术,继承了OLE DB的优点。属于数据库访问的高层接口。l OLE DB 是用于访问数据的重要的系统级编程接口,它是 ADO 的基础技术,同时还是 ADO.NET 的数据源。l 可以这么说,ADO为OLEDB提供高层应用API函数经常有人在网上问到怎么使用ado来打开带有密码的access数据库,下面我来详细介绍使用udl文件来打开带有密码的access数据库。 假设access数据库文件client.mdb打开密码是“cxw”。 第一步:建立udl文件 在win2000下新建一个文本文件test.txt,然后将文件后缀改为.udl。双击文件打开test.udl出现如下对话框: 图1 在上面的对话框中选择数据库的驱动,我们选择access2000的驱动Microsoft Jet 4.0 OLE DB Provider,点击“Next”进入如下图所示对话框: 图2首先选择数据源文件,点击“.”按钮选择access数据库文件。在Username编辑框中输入用户名Admin(access数据库的用户名是固定的),选中“Blank password”。其他保持默认值,进入“All”页面如下图所示: 图3 在上图中选中“Jet OLE DB:Database Password”,点击“Edit Value.”按钮输入access数据库client.mdb的密码“cxw”,点确定退出。再在上图的对话框中选中“Persist Security Info”,点击“Edit Value.”选择false。其他保持默认值。这样udl文件已经设置完毕,我们可以进入“Connection”页面(如图2),在对话框中点击“Test Connection”可以测试连接是否成功,测试成功就表明udl文件已经成功建立。 第二步,建立ado连接 首先在stdafx.h文件中加入: #pragma warning (disable: 4146) #import c:Program FilesCommon Filessystemadomsado15.dll no_namespace rename(EOF, EndOfFile) #pragma warning (default: 4146) 而且还要注意这段话的位置,要在stdafx.h中所有include语句的后面 由于ado是com组件,因此在应用程序的开始要初始化com环境: :CoInitialize(NULL); 然后在需要连接数据库的代码出加入如下代码: _ConnectionPtr m_pDBConn; m_pDBConn.CreateInstance(_uuidof(Connection); /创建com对象 m_pDBConn-ConnectionString =File Name=c:mydirtest.udl; try m_pDBConn-Open(,NULL); catch(_com_error &e) /处理异常的代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m_pDBConn=NULL; 这样就已经使用udl文件建立了ado连接,使用udl文件连接数据库的优点是:当你连接的数据库名称或者用户名密码等发生变化时,你只需要更改一下udl文件即可,不需要修改你的源程序,当然更不需要重新编译了。通过ADO连接各种数据库的字符串翠集海南省信息服务中心 温大文在网络编程过程中,ADO(Activex Data Object)编程往往是不可少的工作,特别是开发电子商务网站。既然讲到ADO数据对象,那么就顺便简单地介绍一下ADO数据对象及其功能。ADO数据对象共有七种独立的对象,他们分别是连接对象(Connection)、记录集对象(RecordSet)、域对象(Field)、命令对象(Command)、参数对象(Parameter)、属性对象(Property)和错误对象(Error)。功能请参见附录1。ADO数据对象用来连接数据库的方式有两种,分别是ODBC和OLE DB方式,下面就分别介绍用这两种方式连接数据库的例子。第一种:ODBC DSN-Less ConnectionsODBC Driver for Access ODBC Driver for dBASE ODBC Driver for Excel ODBC Driver for MySQL ODBC Driver for Oracle ODBC Driver for Paradox ODBC Driver for SQL Server ODBC Driver for Sybase ODBC Driver for Sybase SQL Anywhere ODBC Driver for Text ODBC Driver for Teradata ODBC Driver for Visual FoxPro第二种:OLE DB Data Provider ConnectionsOLE DB Provider for Active Directory Service OLE DB Provider for DB2 OLD DB Provider for Internet Publishing OLE DB Provider for Index Server OLE DB Provider for Microsoft Jet OLE DB Provider for ODBC Databases OLE DB Provider for Oracle (From Microsoft) OLE DB Provider for Oracle (From Oracle) OLE DB Provider for Simple Provider OLE DB Provider for SQL Server一、下面我就先讲利用ODBC DSN来访问数据库,要完成这项工作,必须先通过“控制面板”“管理工具”“ODBC数据源”来建立一个数据源名,例如叫做TestData_Resoure。1) 通过系统数据源(System DSN)的连接2) 通过文件数据源(File DSN)的连接3) 通过连接池(DSN-Less)的连接(ODBC Driver for AS/400)二、利用数据库驱动程序直接访问数据库的连接字符串。1) ODBC Driver for Access 标准的也是比较常用的连接方法 假如是一个工作组的系统数据库,那么连接字符串如下 假如数据库(MDB)是网络上共享的,那么连接字符串如下2) ODBC Driver for dBASE说明:这里要注意的一点就是,在SQL查询语句中要特别指定数据库文件名,例如:oRs.Open Select * From Testdb.dbf, oConn, , ,adCmdText3) ODBC Driver for Excel4) ODBC Driver for MySQL (通过 MyODBC驱动程序) 连接到本地数据库(local database) 连接远程数据库(remote databas)5) ODBC Driver for Oracle6) ODBC Driver for Paradox7) ODBC Driver for SQL Server8) ODBC Driver for Sybase (通过Sybase System 11 ODBC Driver驱动程序)9) ODBC Driver for Sybase SQL Anywhere10) ODBC Driver for Teradata11) ODBC Driver for Text12) ODBC Driver for Visual FoxPro使用数据库容器(database container)连接方式 不使用数据库容器(database container)连接方式(即Free Table Directory方式) % 接下来讲使用OLE DB来连接数据库的例子。1) OLE DB Provider for Active Directory Service2) OLE DB Provider for DB23) OLE DB Provider for Index Server4) OLE DB Provider for Internet Publishing5) OLE DB Provider for Microsoft Jet 标准的也是常用的访问方式。 假如是一个工作组的系统数据库,那么连接字符串如下。注意:在使用4.0 OLE DB Provider 提供者的驱动程序时,要记得把MDB和MDW转换成the 4.0 database格式。 如果MDB是设置密码的话,那么使用如下连接字符串。oConn.Open Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source=c:somepathmydb.mdb; & _ Jet OLEDB:Database Password=MyDbPassword;, _ admin, 如果MDB是位于网络中并且是共享的话,那么使用如下连接字符串。oConn.Open Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source=myServermySharemyPathmyDb.mdb; 如果要想使用专有的方式来访问数据库,那么使用如下连接字符串。oConn.Mode = adModeShareExclusiveoConn.Open Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source=c:somepathmyDb.mdb; & _ User Id=admin;Password=;6)使用OLE DB Provider for Microsoft Jet来访问Excel电子数据表。说明:这里的HDR=Yes的意思是,提供者访问Excel电子数据表时没有把第一排的数据加入到数据集中;而当HDR=No时的意思是提供者访问Excel电子数据表时动作恰好跟上面所述相反。7)OLE DB Provider for ODBC Databases 访问MS Access数据库 访问MS SQL Server 数据库8) OLE DB Provider for Oracle (from Microsoft)9) OLE DB Provider for Oracle (from Oracle)10) OLE DB Provider for SQL Server 标准连接方式 通过机器的IP地址访问说明:IP:xxx.xxx.xxx.xxx SQLServer默认端口:1433附录1:ADO数据对象及其功能简介ADO数据对象功能.Connection代表与一个数据源的唯一对话.Command用Command对象,你可以执行带参数的存储过程,SQL查询,SQL语句。你可以使用Command对象接收Recordset对象。.RecordSet用于代表一数据库表。.Error该对象包含所有的错误和警告信息。该对象只具有属性值。.FieldField对象代表在数据集中的某一列。.ParameterParameter对象用于提供要参数的SQL查询或存储过程所需的参数,或者从存储过程中返回值。.Property代表数据提供者的具体属性。(全文完)关于分页: 首先,我们可以为PageSize属性设置一个值,从而指定从记录组中取出的构成一个页的行数;然后通过RecordCount属性来确定记录的总数;再用记录总数除以PageSize就可得到所显示的页面总数;最后通过AbsolutePage属性就能完成对指定页的访问 - BOF属性:目前指标指到RecordSet的第一笔。 EOF属性:目前指标指到RecordSet的最后一笔。 Move方法:移动指标到RecordSet中的某一条记录。 AbsolutePage属性:设定当前记录的位置是位于哪一页 AbsolutePage属性设定当前记录的位置是位于哪一页的页数编号;使用PageSize属性将Recordset对象分割为逻辑上的页数,每一页的记录数为PageSize(除了最后一页可能会有少于PageSize的记录数)。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。与AbsolutePosition属性相同,AbsolutePage属性是以1为起始的,若当前记录为Recordset的第一行记录,AbsolutePage为1。可以设定AbsolutePage属性,以移动到一个指定页的第一行记录位置。 AbsolutePosition属性:目前指标在RecordSet中的位置。 若您需要确定目前指标在RecordSet中的位置,您可以用AbsolutePosition属性。AbsolutePosition属性的数值为目前指标相对於第一笔的位置,由1算起,即第一笔的AbsolutePosition为1。注意,在存取RecordSet时,无法保证RecordSet每次都以同样的顺序出现。若要启用AbsolutePosition,必须先设定为使用用户端cursor(指针),asp码如下: rs2.CursorLocation=3 PageCount属性:显示Recordset对象包括多少“页”的数据。 使用PageCount属性,决定Recordset对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于PageSize属性的设定,即使最后一页的记录数比PageSize的值少,最后一页也算是PageCount的一页。必须注意也并不是所有的数据提供者都支持此项属性。 PageSize属性:显示Recordset对象每一页显示的记录数。 PageSize属性是决定ADO存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用AbsolutePage属性移到其它逻辑页的第一条记录。PageSize属性能随时被设定。 RecordCount属性:显示Recordset对象记录的总数。 rs.RecordCount:游标中的数据记录总数。 rs.MoveFirst:指向第一条记录。 rs.Move(6):移动到第6条记录。 rs.MoveLast:指向最后一条记录。 rs.MovePrev:指向上一条记录。 rs.MoveNext:指向下一条记录。 rs.GetRows:将数据放入数组中 Recordset对象的Open函数: Rs.Open数据表名称或SQL指令,Connection对象,Recordset类型,锁定类型 参数一:若指定成数据表名称,则打开整个数据表,若指定成Select指令,则所建立的Recordset对象是Select指令选取的数据记录的结果。 参数二:传入某一个已打开的数据库的Connection对象。 参数三:是Recordset类型,它含有下表的四种设置值: Recordset类型的设置值意义 AdOpenForwardOnly(=0)只读,且当前数据记录只能向下移动 AdOpenStatic(=3)只读,当前数据记录可自由移动 AdOpenKeyset(=1)可读写,当前数据记录可自由移动 AdOpenDynamic(=2)可读写,当前数据记录可自由移动 AdOpenKeyset和AdOpenDynamic的差别只表现在多人共用数据库时,若以AdOpenKeyset模式打开数据表,则无法看到其他人新增的数据记录(除非重新启动),如果是以AdOpenDynamic模式打开数据库,则可以看到其他人新增的数据记录。 参数四:是锁定类型,它同样含有四种设置值,见下表: 锁定类型的设置值意义 adLockReadOnly(=1)默认值,用来打开只读的数据记录 adLockPessimistic(=2)悲观锁定 adLockOptimistic(=3)乐观锁定 adLockBatchOptimistic(=4)批次乐观锁定 Recordset对象 记录集对象,用于对TRS数据库/视图进行检索并获取检索结果,以及进行数据库记录维护等操作。 【属性】(带的为只读属性,带中括号的为可选参数) Handle:long 检索句柄,可用该句柄调用ClientAPI的检索函数。 Sources:String 当前检索的目标数据库/视图列表。 WhereExpr:String 当前检索的条件表达式。 SortMethod:String 当前检索的结果记录排序方式。 StatExpr:String 当前检索的统计结果表达式列表。 Defaul

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论