我使用ActiveX Data Object(ADO)是从1.5版本开始,那已经是一个非常古老的版本了。现在的版本中,许多东西都发生了变化。从每一次版本升级中我都学到许多新的东西。这些东西你不能全部从书本上找到,或者至少可以说,不能从一个地方找到。
我在这里精心选择和总结了这些ADO开发要点和技巧。其中有些问题可能就是你一直念念不忘的问题;有些是你从来不曾了解的技术;还有一些只是分门别类地展示ADO开发的知识精华。
一、共享连接对象
把连接字符串传递给Command、Recordset或者Record对象时,每次你都是在隐含地命令ADO创建一个Connection对象:
Dim rec1 As ADODB.Record
Dim rec2 As ADODB.Record
Dim rec3 As ADODB.Record
Set rec1 = New ADODB.Record
rec1.Open "localstart.asp", "URL=http://localhost/"
Set rec2 = New ADODB.Record
rec2.Open "global.asa", "URL=http://localhost/"
Set rec3 = New ADODB.Record
rec3.Open "iisstart.asp", "URL=http://localhost/"
' 执行一些操作
rec1.Close
rec2.Close
rec3.Close
Set rec1 = Nothing
Set rec2 = Nothing
Set rec3 = Nothing
为了节省资源,你应该先创建一个Connection对象,然后把它传递给所有要求活动连接的对象。也就是说,上面的代码应该改成下面这种形式:
Dim con As ADODB.Connection
Dim rec1 As ADODB.Record
Dim rec2 As ADODB.Record
Dim rec3 As ADODB.Record
Set con = New ADODB.Connection
con.Open "URL=http://localhost/"
Set rec1 = New ADODB.Record
rec1.Open "localstart.asp", con
Set rec2 = New ADODB.Record
rec2.Open "global.asa", con
Set rec3 = New ADODB.Record
rec3.Open "iisstart.asp", con
' 执行一些操作'
rec1.Close
rec2.Close
rec3.Close
con.Close
Set rec1 = Nothing
Set rec2 = Nothing
Set rec3 = Nothing
Set con = Nothing
二、读取ConnectionString属性
从任何已经打开的Connection对象中,包括由Recordset、Command、或者Record对象的ActiveConnection属性返回的Connection对象,你总是可以读取到ConnectionString属性。
Dim com As ADODB.Command
Dim rst As ADODB.Recordset
Set com = New ADODB.Command
com.ActiveConnection = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=NWind.mdb;"
com.CommandText = "SELECT * FROM Customers"
Set rst = com.Execute
MsgBox com.ActiveConnection.ConnectionString
rst.Close
Set rst = Nothing
Set com = Nothing
上述代码运行时,你将从消息框看到如下输出:
Provider=Microsoft.Jet.OLEDB.4.0;
Password="";
User ID=Admin;
Data Source=NWind.mdb;
Mode=Share Deny None;
Extended Properties="";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=4;
Jet OLEDB:Database Locking Mode=0;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False
现在你就可以分析这个字符串,找出有关该连接的特定信息,比如当数据库被压缩时它是否会被加密(Jet OLEDB:Encrypt Database属性
我在这里精心选择和总结了这些ADO开发要点和技巧。其中有些问题可能就是你一直念念不忘的问题;有些是你从来不曾了解的技术;还有一些只是分门别类地展示ADO开发的知识精华。
一、共享连接对象
把连接字符串传递给Command、Recordset或者Record对象时,每次你都是在隐含地命令ADO创建一个Connection对象:
Dim rec1 As ADODB.Record
Dim rec2 As ADODB.Record
Dim rec3 As ADODB.Record
Set rec1 = New ADODB.Record
rec1.Open "localstart.asp", "URL=http://localhost/"
Set rec2 = New ADODB.Record
rec2.Open "global.asa", "URL=http://localhost/"
Set rec3 = New ADODB.Record
rec3.Open "iisstart.asp", "URL=http://localhost/"
' 执行一些操作
rec1.Close
rec2.Close
rec3.Close
Set rec1 = Nothing
Set rec2 = Nothing
Set rec3 = Nothing
为了节省资源,你应该先创建一个Connection对象,然后把它传递给所有要求活动连接的对象。也就是说,上面的代码应该改成下面这种形式:
Dim con As ADODB.Connection
Dim rec1 As ADODB.Record
Dim rec2 As ADODB.Record
Dim rec3 As ADODB.Record
Set con = New ADODB.Connection
con.Open "URL=http://localhost/"
Set rec1 = New ADODB.Record
rec1.Open "localstart.asp", con
Set rec2 = New ADODB.Record
rec2.Open "global.asa", con
Set rec3 = New ADODB.Record
rec3.Open "iisstart.asp", con
' 执行一些操作'
rec1.Close
rec2.Close
rec3.Close
con.Close
Set rec1 = Nothing
Set rec2 = Nothing
Set rec3 = Nothing
Set con = Nothing
二、读取ConnectionString属性
从任何已经打开的Connection对象中,包括由Recordset、Command、或者Record对象的ActiveConnection属性返回的Connection对象,你总是可以读取到ConnectionString属性。
Dim com As ADODB.Command
Dim rst As ADODB.Recordset
Set com = New ADODB.Command
com.ActiveConnection = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=NWind.mdb;"
com.CommandText = "SELECT * FROM Customers"
Set rst = com.Execute
MsgBox com.ActiveConnection.ConnectionString
rst.Close
Set rst = Nothing
Set com = Nothing
上述代码运行时,你将从消息框看到如下输出:
Provider=Microsoft.Jet.OLEDB.4.0;
Password="";
User ID=Admin;
Data Source=NWind.mdb;
Mode=Share Deny None;
Extended Properties="";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=4;
Jet OLEDB:Database Locking Mode=0;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False
现在你就可以分析这个字符串,找出有关该连接的特定信息,比如当数据库被压缩时它是否会被加密(Jet OLEDB:Encrypt Database属性
| 对此文章发表了评论 |
