0
MsgBox "缓存内容: " & str.ReadText
str.Close
另外,你还可以用Stream对象处理二进制数据,只需用Write和Read方法取代操作文本的WriteText和ReadText方法。把数据放入缓存之后,你可以用SaveToFile方法永久保存数据。
八、检查警告信息
Connection对象的Errors集合不仅用来报告数据提供者在执行某个操作时出现的错误,而且它还用于指示执行操作过程中出现的非致命性警告信息。
Connection.Open、Recordset.CancelBatch、Recordset.Resync以及Recordset.UpdateBatch方法,还有Recordset.Filter属性,都有可能产生警告信息。
要检测数据提供者的警告信息(或错误信息),请在使用上述任何方法启动某个操作之前调用Connection.Errors.Clear方法;操作完成后,用Errors集合的Count属性检查是否存在任何警告信息。
九、事务嵌套
使用Jet OLE DB provider时,你可以嵌套事务,最多五层。使用多层事务将赋予你空前的数据控制能力。
Dim con As ADODB.Connection
Dim iLevel As Integer
Set con = New ADODB.Connection
con.CursorLocation = adUseClient
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=NWind.mdb;"
con.BeginTrans
' 改动 1
con.BeginTrans
' 改动 2
con.BeginTrans
' 改动 3
iLevel = con.BeginTrans
' 改动 4
MsgBox "Level " & iLevel
con.CommitTrans
con.RollbackTrans
con.CommitTrans
con.CommitTrans
con.Close
Set con = Nothing
在上面这个例子中,改动1和2将成功,改动3和4无效。改动4表面上已经被提交,但由于第三层事务回退,从而导致所有它里面的事务都被回退。
十、重视数据形状
我要为你介绍的最后一则技巧是不要轻视Microsoft Data Shaping Service for OLE DB的力量。Data shaping(数据形状)允许你聚合多个SQL语句,构造出层次型的记录集。在层次型记录集中,单个字段能够指向整个子记录集。
例如,如果有两个来自Biblio数据库的表Publishers和Titles(Biblio数据库是Microsoft的一个示例,可以从这里下载),你可以按照下面介绍的方式构造SQL命令,把它们连接到一个记录集。
SELECT Publishers.Name, Titles.Title
FROM Publishers
INNER JOIN Titles ON
Publishers.PubID=Titles.PubID
ORDER BY Publishers.Name, Titles.Title;
前面几个记录如下所示:
Name (Pub) Title
-------------- -----------------------------
A K PETERS A Physical Approach to Col...
A K PETERS Colour Principles for C...
A SYSTEM PUBNS C Plus Plus Reference Card
A SYSTEM PUBNS C Reference Card
AA BALKEMA Planning With Linear Progr...
AARP Thesaurus of Aging Termin...
ABACUS Access 2.0 Programming Bible
ABACUS Advanced Access Programming
可以看到,这个记录集中存在大量的重复数据。利用数据形状技术,我们能够极大地减小结果数据的规模大小。下面的表被发送到客户端,并传递给数据形状游标服务。
Name (Publisher)
------------------------------------
A K PETERS
A SYSTEM PUBNS
AA BALKEMA
AARP
ABACUS
Title
------------------------------------
A Physical Approach to Color...
Colour Principles for Computer...
C Plus Plus Reference Card
C Reference Card
Planning With Linear Programming
Thesaurus of Aging Terminology : ...
Access 2.0 Programming Bible
Advanced Access Programming
在数据形状游标服务中,这两个表通过Chapters字段类型连接成一个层次结构,Chapters字段类型用来访问子记录集。
Dim con As ADODB.Connection
Dim rstPubs As ADODB.Recordset
Dim rstTitles As ADODB.Recordset
Dim sShape As String
Set con = New ADODB.Connection
Set rstPubs = New ADODB.Recordset
con.Provider = "MSDataShape"
con.Open "Data Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=Biblio.mdb;"
sShape = &qu
MsgBox "缓存内容: " & str.ReadText
str.Close
另外,你还可以用Stream对象处理二进制数据,只需用Write和Read方法取代操作文本的WriteText和ReadText方法。把数据放入缓存之后,你可以用SaveToFile方法永久保存数据。
八、检查警告信息
Connection对象的Errors集合不仅用来报告数据提供者在执行某个操作时出现的错误,而且它还用于指示执行操作过程中出现的非致命性警告信息。
Connection.Open、Recordset.CancelBatch、Recordset.Resync以及Recordset.UpdateBatch方法,还有Recordset.Filter属性,都有可能产生警告信息。
要检测数据提供者的警告信息(或错误信息),请在使用上述任何方法启动某个操作之前调用Connection.Errors.Clear方法;操作完成后,用Errors集合的Count属性检查是否存在任何警告信息。
九、事务嵌套
使用Jet OLE DB provider时,你可以嵌套事务,最多五层。使用多层事务将赋予你空前的数据控制能力。
Dim con As ADODB.Connection
Dim iLevel As Integer
Set con = New ADODB.Connection
con.CursorLocation = adUseClient
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=NWind.mdb;"
con.BeginTrans
' 改动 1
con.BeginTrans
' 改动 2
con.BeginTrans
' 改动 3
iLevel = con.BeginTrans
' 改动 4
MsgBox "Level " & iLevel
con.CommitTrans
con.RollbackTrans
con.CommitTrans
con.CommitTrans
con.Close
Set con = Nothing
在上面这个例子中,改动1和2将成功,改动3和4无效。改动4表面上已经被提交,但由于第三层事务回退,从而导致所有它里面的事务都被回退。
十、重视数据形状
我要为你介绍的最后一则技巧是不要轻视Microsoft Data Shaping Service for OLE DB的力量。Data shaping(数据形状)允许你聚合多个SQL语句,构造出层次型的记录集。在层次型记录集中,单个字段能够指向整个子记录集。
例如,如果有两个来自Biblio数据库的表Publishers和Titles(Biblio数据库是Microsoft的一个示例,可以从这里下载),你可以按照下面介绍的方式构造SQL命令,把它们连接到一个记录集。
SELECT Publishers.Name, Titles.Title
FROM Publishers
INNER JOIN Titles ON
Publishers.PubID=Titles.PubID
ORDER BY Publishers.Name, Titles.Title;
前面几个记录如下所示:
Name (Pub) Title
-------------- -----------------------------
A K PETERS A Physical Approach to Col...
A K PETERS Colour Principles for C...
A SYSTEM PUBNS C Plus Plus Reference Card
A SYSTEM PUBNS C Reference Card
AA BALKEMA Planning With Linear Progr...
AARP Thesaurus of Aging Termin...
ABACUS Access 2.0 Programming Bible
ABACUS Advanced Access Programming
可以看到,这个记录集中存在大量的重复数据。利用数据形状技术,我们能够极大地减小结果数据的规模大小。下面的表被发送到客户端,并传递给数据形状游标服务。
Name (Publisher)
------------------------------------
A K PETERS
A SYSTEM PUBNS
AA BALKEMA
AARP
ABACUS
Title
------------------------------------
A Physical Approach to Color...
Colour Principles for Computer...
C Plus Plus Reference Card
C Reference Card
Planning With Linear Programming
Thesaurus of Aging Terminology : ...
Access 2.0 Programming Bible
Advanced Access Programming
在数据形状游标服务中,这两个表通过Chapters字段类型连接成一个层次结构,Chapters字段类型用来访问子记录集。
Dim con As ADODB.Connection
Dim rstPubs As ADODB.Recordset
Dim rstTitles As ADODB.Recordset
Dim sShape As String
Set con = New ADODB.Connection
Set rstPubs = New ADODB.Recordset
con.Provider = "MSDataShape"
con.Open "Data Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=Biblio.mdb;"
sShape = &qu
| 对此文章发表了评论 |
