应用程序访问数据库技术Word文档格式.docx
《应用程序访问数据库技术Word文档格式.docx》由会员分享,可在线阅读,更多相关《应用程序访问数据库技术Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
MSDASQL
针对ODBC的OLEDB提供者
SQLOLEDB
针对SQLSERVER的OLEDB提供者
ADsDSOObject
针对活动目录的OLEDB提供者
MSIDXS
针对索引服务的OLEDB提供者
Microsoft.Jet.OLEDB.3.51
针对MicrosoftJet的OLEDB提供者
MSDAORA
针对Oracle的OLEDB提供者
1.3对象模型
我们把ODBC、OLEDB统称为访问数据库的中间件。
ODBC的API函数是用C语言编写的、OLEDB的API函数是用C++语言编写的。
开发应用程序的语言有许多种(C、C++、JAVA、VB等),如果开发应用程序的语言与访问数据库的中间件API的语言不同,那么调用将很麻烦,并且调用时还要考虑这些API函数的调用时序。
为了适应面向对象的程序设计,我们可以把ODBC、OLEDB的API函数封装成对象,使面向对象的语言调用更方便。
2.通过ODBC访问数据库
3.通过OLEDB访问数据库
4.通过ADO访问数据库
ADO对象模型是对OLEDB的封装。
4.1ADO对象模型层次结构
4.2Connection
Connection对象的主要用途是连接DBMS。
4.2.1属性
1、CommandTimeout
⑴ 作用
指定中止某个相关Command对象的Execute调用之前必须等待的时间。
⑵ 取值说明
可读写Long类型。
默认值为30秒。
2、ConnectionString
⑴ 作用
提供数据提供者或服务提供者打开到数据源的连接所需要的特定连接信息。
⑵ 取值说明
可读写String类型。
3、ConnectionTimeout
指定中止一个失败的Connection.Open方法调用之前必须等待的时间。
默认值为15秒。
4、CursorLocation
确定是使用客户端(adUseClient)游标引擎,还是使用服务器端(adUseServer)游标引擎。
可读写Long类型,具体如下:
adUseClient:
客户段游标,好处是:
能降低网络流量。
adUseServer:
服务器段游标,好处是:
程序对数据库的修改可以立即反映到服务器,而且其他用户对数据库的操作也可以马上反映出来;
缺点是:
网络流量高,每个数据访问都需要网络交换数据。
5、DefauitDatabase
设置连接的默认数据库,如果ConnectString中未指定数据库名称,就使用这里所指定的名称连接数据库服务器时,才需要指定该属性值。
因为一个数据库服务器下可能有许多数据库。
可读写String类型,服务器下的一个数据库名称。
6、Errors集合和Error对象
Errors集合:
存放着Connection连接产生的所有错误,每一个错误都是一个对象,对象ASError型。
该集合的方法有:
Clear:
清楚集合中的Error对象。
Refresh:
刷新集合。
该集合的属性有:
Item:
它是集合的默认方法,它返回对集合中Error对象的引用。
SetEr=Adocon.Errors[.Item](对象名|索引号)
Er为Error型变量。
Adocon为Connection型变量。
Count:
返回集合中对象的数目
Errors对象:
该对象有七个只读属性,没有方法。
Description:
对错误的简单文字说明。
String类型。
HelpContent:
指定错误在WindowsHelp文件中的标识ID。
Long型。
HelpFile:
指定WindowsHelp文件名全称。
String类型
NativeError:
指定特定提供者的错误代码。
Number:
指定Errors在Errors集合中的索引值。
Long型
Source:
返回导致错误的对象的名称。
SQLstate:
注意:
不同厂家的DBMS的SQLstate不同。
⑵ 应用说明
dimcnnnwindasnewadodb.connection
dimrstcustsasnewadodb.recordset
onerrorgotol1
cnnnwind.provider=”Microsoft.Jet.OLEDB.3.51”
cnnnwind.openapp.path&
“\nwind.mdb”,“admin”
withrstcusts
set.activeconnection=cnnnwind
.cursortype=adopenkeyset
.locktype=adlockbatchoptimistic
.open“select*fromnon-existent”
endwith
setadodc1.recordset=rstcusts
exitsub
l1:
dimcolerrorsaserrors
dimerrnwindaserror
setcolerrors=cnnnwind.errors
foreacherrnwindincolerrors
debug.print“错误描述:
”&
errnwind.description
debug.print“提供者错误码:
errnwind.nativeerror
debug.print“SQL状态码:
errnwind.SQLstate
nexterrnwind
setcolerrors=nothing
seterrnwind=nothing
setrstcusts=nothing
setcnnnwind=nothing
7、IsolationLevel
指定和其他并发事务交互时,使用锁的行为,既设置锁的隔离级别。
只有用Connection对象的事务方法启动了事务,该属性的设置值才起作用。
adXactCursorStability
只允许读其他事务已提交的改变(默认值)
adXactBrowse
允许读其他事务未提交的改变
adXactChaos
本事务不会覆盖其他位于更高隔离程度的事务所做的改变
adXactIsolated
所有事务相互独立
adXactReadCommitted
等同于adXactCursorStability
adXactReadUncommitted
等同于adXactBrowse
adXactRepeatableRead
禁止读其他事务的改变
adXactSerializable
等同于adXactIsolated
adXactUnspecified
不能确定提供者的事务隔离程度
⑶ 应用说明
8、Mode
指定本连接的读写权限。
Long类型。
adModeUnknown
未指定数据源的连接许可权(默认值)
adModeRead
连接是只读的
adModeReadWrite
连接是可读写的
adModeShareDenyNone
不拒绝其他用户的读写访问(Jet
OLE
DB
Provider的默认值)
adModeShareDenyRead
拒绝其他用户打开到数据源的读连接
adModeShareDenyWrite
拒绝其他用户打开到数据源的写连接
adModeShareExclusive
以独占方式打开数据源
adModeWrite
连接是只写的
用SQL数据定义语言DDL时,必须是“独占方式”。
19、Properties
Connection对象的属性集合。
只读,Connection对象的属性
11、Provider
如果ConnectionString中未指定OLE
DB数据或服务提供者的名称,就使用这时指定的名称
可读写String类型,具体如下:
MSDASQL:
针对ODBC。
SQLOLEDB:
针对SQLServer。
Microsoft.Jet.3.51:
针对MicrosoftJet。
MSDAORA:
针对Oracle。
ADsDSOObject:
针对“活动目录”服务。
MSIDXS:
针对“索引”服务。
12、State
设置或指示连接是处于什么状态。
adStateClosed
Connection(或其他对象)是关闭的(默认值)
adStateConnecting
正在连接数据源的状态
adStateExecuting
Connection或Command对象的Execute方法已被调用
adStateFetching
返回行(row)到Recordset对象
adStateOpen
Connection(或其他对象)是打开的(活动的)
4.2.2方法
1、BeginTans
⑴ 语法
FunctionBeginTans()asLong
连接对象名.BeginTans
⑵ 参数说明
⑶ 用途
初始化一个事务;
其后必须有CommitTrans和/或RollbackTrans相呼应.
2、Cancel
SubCancel()
3、Close
SubClose()
连接对象名.Close
关闭连接.
⑷ 举例
4、CommitTrans
⑴ 语法
SubCommitTrans()
⑵ 参数说明
⑶ 用途
回送参数,返回插入、修改、删除操作后所影响的行数
5、Execute
FunctionExecute(CommandTextAsString,[RecordsAffected],[OptionsAsLong=-1])AsRecordset
CommandText:
要执行的SQL语句字符串。
RecordsAffected:
回送参数,返回插入、修改、删除操作后所影响的行数
OptionsAsLong:
确定以何种方式来产生“记录集”,取值如下:
取值
说明
adCmdUnknown
未定(默认值),由提供者去判断。
adCmdFile
是和对象类型相应的文件名称
adCmdStoredProc
是存储过程名
adCmdTable
是能产生内部SELECT*FROM表名查询的表名称
adCmdTableDirect
是能直接从表中获取行内容的表名
adCmdText
是一条SQL语句
执行一个SQL命令后,返回一个结果集。
⑷ 举例
dimADOconasNewADODB.Connection
dimADOcomasNewADODB.Command
dimADOrecasNewADODB.Recordset
dimsqlstringasstring
ADOcon.Open“连接串及属性设置”
Sqlstring=”select*from表名where条件”
SetADOrec=ADOcon.Execute(Sqlstring)
或
SetADOrec=ADOcon.Execute(Command:
=Strcommand,RowsAffected:
=
lngRowsAffected,Option:
=lngOption)
Strcommand:
SQL语句,表名,存储过程名
lngRowsAffected:
返回插入、修改、删除操作后所影响的行数。
对SELECT
语句返回0。
6、Open
SubOpen([ConnectionStringAsString],[UserIDAsString],[PasswordAsString],[OptionsAsLong=-1])。
连接对象名.Open
打开一个物理连接,用连接字符串来打开一个连接
DimadocnasNewADODB.Connect
① adocn.open:
使用连接串ConnectionString的值打开连接。
② adocn.open“Provider=SQLOLEDB;
UserID=用户名;
Password=密码
InitialCatalog=数据库名;
DataSource=服务器名”
针对ODBC的提供者名指定ODBC的驱动程序
③ Connectstring=”provider=MSDASQL;
driver={SQLServer};
server=数据库服务器名称;
uid=用户名;
pwd=密码;
database=数据库名”
7、OpenSchema
FunctionOpenSchema(SchemaAsSchemaEnum,[Restrictions],[SchemaID])AsRecordset
返回一个Recordset对象,以提供数据源的结构信息。
SetAdoRs=Adocon.OpenSchemaadSchemaColumns
8、RollbackTrans
SubRollbackTrans()
4.2.3事件
4.2.4应用示例
4.3Command
Command对象的主要用途是执行SQL命令、存储过程。
4.3.1属性
4.3.2方法
4.3.3事件
4.4RecordSet