应用程序访问数据库技术.doc_第1页
应用程序访问数据库技术.doc_第2页
应用程序访问数据库技术.doc_第3页
应用程序访问数据库技术.doc_第4页
应用程序访问数据库技术.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

应用程序访问数据库技术1. 应用程序访问数据库技术概述应用程序必须通过DBMS来访问数据库中的数据,DBMS要向应用程序提供一个访问接口(API,一组函数),应用程序通过调用它们来访问数据库。如图所示:数据库APIDBMS应用程序 由于不同厂家开发DBMS的API各不相同,这给程序员带来很多麻烦,要编写基于某个厂家DBMS的应用程序,就必须学习、掌握该DBMS的API。1.1 ODBCODBC是开放数据库互联(Open DataBase Connectivity)的缩写,它是由Microsoft公司联合一些数据库厂商共同推出的一个应用程序访问数据库的公共接口(API)标准。通过它应用程序可以访问任何一种数据源而不必了解该数据源的细节(当然该数据源要按ODBC标准提供驱动程序) 。其组成如下图所示: ODBC驱动程序管理器(ODBC. DLL)各DBMS厂家提供的驱动程序(*DLL)应用程序网络通信软件数据源(DBMS) 通过ODBC API 访问 可以说:ODBC是一个中间件。所谓中间件就是提供应用程序间通信、会话或翻译服务的程序。1、ODBC驱动程序管理器作用 管理应用程序和驱动程序之间的交互作用,为应用程序加载和调用驱动程序。2、ODBC驱动程序作用 执行ODBC函数调用,提交SQL请求给指定的数据源(DBMS)并将结果返回给应用程序。3、网络通信软件的作用负责网络通信。例如:TCP/IP协议。1.2 OLEDBODBC向应用程序提供了一个访问数据库的统一API,这样一来,程序员只要掌握ODBC的API就可以开发访问任何符合SQL标准的数据库(SQL数据源)的程序了。然而,通过ODBC只能访问SQL数据源,不能访问其它数据源(例如:文件系统、目录系统等)。OLEDB是微软公司给出的访问数据源(包括:SQL数据源、文件系统、目录系统等)的通用标准。如图所示:应用程序DBMSSQL数据源OLEDB提供者文件系统目录系统提供者提供者 OLE DB标准的具体实现是一组C+API函数,OLE DB的API是符合COM标准、基于对象的。利用OLE DB API 可以编写出能够访问任何符合OLE DB标准的数据源的应用程序。常用的OLE DB标准的服务提供程序介绍 名称 说明MSDASQL针对ODBC的OLE DB提供者SQLOLEDB针对SQL SERVER的OLE DB提供者ADsDSOObject针对活动目录的OLE DB提供者MSIDXS针对索引服务的OLE DB提供者Microsoft.Jet.OLEDB.3.51针对MicrosoftJet的OLE DB提供者MSDAORA针对Oracle的OLE DB提供者1.3 对象模型我们把ODBC、OLEDB统称为访问数据库的中间件。ODBC的API函数是用C语言编写的、OLEDB的API函数是用C+语言编写的。开发应用程序的语言有许多种(C、C+、JAVA、VB等),如果开发应用程序的语言与访问数据库的中间件API的语言不同,那么调用将很麻烦,并且调用时还要考虑这些API函数的调用时序。为了适应面向对象的程序设计,我们可以把ODBC、OLEDB的API函数封装成对象,使面向对象的语言调用更方便。应用程序ADODAORDOODBCDirect数据提供者:MSDASQL其它数据提供者具体数据库厂家提供的“提供者”JETODBCOLE DBSQL 数据源其它数据源ODBC驱动程序2. 通过ODBC访问数据库3. 通过OLEDB访问数据库4. 通过ADO访问数据库ADO对象模型是对OLEDB的封装。4.1 ADO对象模型层次结构ADO对象Connection对象Command对象Recordset对象属性集合错误集合参数集合字段集合属性集合属性集合属性集合4.2 Connection Connection对象的主要用途是连接DBMS。4.2.1 属性1、CommandTimeout 作用 指定中止某个相关Command对象的Execute调用之前必须等待的时间。 取值说明 可读写Long类型。默认值为30秒。 2、ConnectionString作用 提供数据提供者或服务提供者打开到数据源的连接所需要的特定连接信息。取值说明 可读写String类型。3、ConnectionTimeout作用 指定中止一个失败的Connection.Open方法调用之前必须等待的时间。取值说明 可读写Long类型。默认值为15秒。4、CursorLocation 作用 确定是使用客户端(adUseClient)游标引擎,还是使用服务器端(adUseServer)游标引擎。 取值说明 可读写Long类型,具体如下: adUseClient:客户段游标,好处是 :能降低网络流量。 adUseServer:服务器段游标,好处是:程序对数据库的修改可以立即反映到服务器,而且 其他用户对数据库的操作也可以马上反映出来;缺点是:网络流量高,每个数据访问都需要网络交换数据。5、DefauitDatabase作用 设置连接的默认数据库,如果ConnectString中未指定数据库名称,就使用这里所指定的名称 连接数据库服务器时,才需要指定该属性值。因为一个数据库服务器下可能有许多数据库。取值说明 可读写String类型,服务器下的一个数据库名称。6、Errors集合和Error对象作用Errors集合:存放着Connection 连接产生的所有错误,每一个错误都是一个对象, 对象 AS Error型。该集合的方法有: Clear :清楚集合中的Error对象。 Refresh :刷新集合。 该集合的属性有: Item :它是集合的默认方法,它返回对集合中Error对象的引用。 Set Er=Adocon.Errors.Item ( 对象名 | 索引号 ) Er为Error型变量。Adocon为Connection型变量。 Count :返回集合中对象的数目 Errors对象:该对象有七个只读属性,没有方法。 Description :对错误的简单文字说明。String类型。 HelpContent :指定错误在Windows Help文件中的标识ID。Long型。 HelpFile :指定Windows Help文件名全称。String类型 NativeError :指定特定提供者的错误代码。Long型。 Number :指定Errors在Errors集合中的索引值。Long型 Source :返回导致错误的对象的名称。String类型 SQLstate :String类型 注意:不同厂家的DBMS的SQLstate不同。应用说明 dim cnnnwind as new adodb.connection dim rstcusts as new adodb.recordset on error goto l1 vider=”Microsoft.Jet.OLEDB.3.51” cnnnwind.open app.path & “nwind.mdb” , “admin” with rstcusts set .activeconnection=cnnnwind .cursortype=adopenkeyset .locktype=adlockbatchoptimistic .open “select * from non-existent”end withset adodc1.recordset= rstcustsexit subl1 : dim colerrors as errors dim errnwind as error set colerrors=cnnnwind.errors for each errnwind in colerrors debug.print “错误描述:” & errnwind.description debug.print “提供者错误码:” & errnwind.nativeerror debug.print “SQL状态码:” & errnwind.SQLstate next errnwind set colerrors=nothing set errnwind=nothing set rstcusts=nothing set cnnnwind=nothing 7、IsolationLevel 作用 指定和其他并发事务交互时,使用锁的行为,既设置锁的隔离级别。只有用Connection对象的事务方法启动了事务,该属性的设置值才起作用。 取值说明 可读写Long类型。 adXactCursorStability只允许读其他事务已提交的改变(默认值)adXactBrowse允许读其他事务未提交的改变adXactChaos本事务不会覆盖其他位于更高隔离程度的事务所做的改变adXactIsolated所有事务相互独立adXactReadCommitted等同于adXactCursorStabilityadXactReadUncommitted等同于adXactBrowseadXactRepeatableRead禁止读其他事务的改变adXactSerializable等同于adXactIsolatedadXactUnspecified不能确定提供者的事务隔离程度应用说明 8、Mode 作用 指定本连接的读写权限。 取值说明 Long类型。 adModeUnknown未指定数据源的连接许可权(默认值)adModeRead连接是只读的adModeReadWrite连接是可读写的adModeShareDenyNone不拒绝其他用户的读写访问(JetOLEDBProvider的默认值)adModeShareDenyRead拒绝其他用户打开到数据源的读连接adModeShareDenyWrite拒绝其他用户打开到数据源的写连接adModeShareExclusive以独占方式打开数据源adModeWrite连接是只写的 用SQL数据定义语言DDL时,必须是“独占方式”。应用说明 19、Properties 作用 Connection对象的属性集合。 取值说明 只读,Connection对象的属性应用说明 11、Provider 作用 如果ConnectionString中未指定OLEDB数据或服务提供者的名称,就使用这时指定的名称 取值说明 可读写String类型,具体如下: MSDASQL:针对ODBC。 SQLOLEDB:针对SQL Server。 Microsoft.Jet.3.51:针对MicrosoftJet。 MSDAORA:针对Oracle。 ADsDSOObject:针对“活动目录”服务。 MSIDXS:针对“索引”服务。 12、State 作用 设置或指示连接是处于什么状态。 取值说明 可读写Long类型。 adStateClosedConnection(或其他对象)是关闭的(默认值)adStateConnecting正在连接数据源的状态adStateExecutingConnection或Command对象的Execute方法已被调用adStateFetching返回行(row)到Recordset对象adStateOpenConnection(或其他对象)是打开的(活动的) 4.2.2 方法1、BeginTans语法 Function BeginTans() as Long 连接对象名. BeginTans 参数说明用途 初始化一个事务;其后必须有CommitTrans和或RollbackTrans相呼应.2、Cancel语法 Sub Cancel()参数说明3、Close语法 Sub Close()连接对象名. Close参数说明用途 关闭连接. 举例 4、CommitTrans 语法 Sub CommitTrans() 参数说明 用途 举例 回送参数,返回插入、修改、删除操作后所影响的行数5、Execute 语法 Function Execute(CommandText As String, RecordsAffected, Options As Long = -1) As Recordset 参数说明 CommandText:要执行的SQL语句字符串。 RecordsAffected:回送参数,返回插入、修改、删除操作后所影响的行数Options As Long:确定以何种方式来产生“记录集”,取值如下:取值说明adCmdUnknown未定(默认值),由提供者去判断。adCmdFile是和对象类型相应的文件名称adCmdStoredProc是存储过程名adCmdTable是能产生内部SELECT *FROM 表名查询的表名称adCmdTableDirect是能直接从表中获取行内容的表名adCmdText是一条SQL语句用途 执行一个SQL命令后,返回一个结果集。举例 dim ADOcon as New ADODB.Connection dim ADOcom as New ADODB.Command dim ADOrec as New ADODB.Recordset dim sqlstring as string ADOcon . Open “连接串及属性设置” Sqlstring=”select * from 表名 where 条件”Set ADOrec=ADOcon . Execute(Sqlstring)或Set ADOrec=ADOcon . Execute(Command:=Strcommand , RowsAffected:=lng RowsAffected , Option :=lng Option)Strcommand:SQL语句,表名,存储过程名lng RowsAffected:返回插入、修改、删除操作后所影响的行数。对SELECT 语句返回0 。 6、Open 语法 Sub Open(ConnectionString As String, UserID As String, Password As String, Options As Long = -1)。 连接对象名. Open 参数说明 用途 打开一个物理连接,用连接字符串来打开一个连接 举例 Dim a

温馨提示

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

评论

0/150

提交评论