)。
三、使用动态属性
Connection对象的Properties集合可用来设置供应商特有的选项,比如SQL Server的OLE DB驱动程序的Prompt动态属性。
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Provider = "SQLOLEDB"
con.Properties("Prompt") = adPromptAlways
con.Open
' 提示用户选择数据库'
con.Close
Set con = Nothing
上述代码运行时,用户将看到一个对话框,这个对话框允许用户选择要登录到哪一个数据库。
四、明智地选择游标位置
选择游标的位置时,你必须考虑对于当前连接来说哪些服务比较重要。
如果数据提供者的服务正是你所需要的,你应该使用服务器端游标。这些服务是数据源驱动程序提供的服务,它们通常具有非常好的可伸缩性。另外,通过保留服务器端游标,你无需象使用客户端游标那样总是把全部的数据发送到客户端。
另一方面,本地游标服务,例如Microsoft数据形状服务for OLE DB,能够提供一些客户端游标特有的服务。要让这些服务能够起作用,数据必须发送到本地机器上,正如数据形状服务所要求的一样。
你可以用Connection.CursorLocation属性设置游标的位置,但选择应该明智、慎重。
五、明智地选择游标类型
选择游标的类型与选择游标的位置同样重要。游标共有四种类型,每一种类型都有各自的优点和缺点。
Static游标(静态游标)提供了数据在给定时刻的一个快照。在这种类型的游标中,数据改动(包括其他用户的数据增加或者删除操作)总是不可见。static游标用来制作报表很理想,因为制作报表需要有数据的一个一致的、不会变化的视图,但static游标不一定速度最快。由于数据的改变不会显示出来,对于每一个使用static游标的连接,服务提供者必须分别为它创建和维护一份给定时刻的数据副本。
Forward Only游标(只能向前的游标)与静态游标基本相同,不同之处在于你只能向前移动访问数据,但不能向后。与Static游标相比,这个限制有利于提高性能,但它仍旧要求数据源维护一个数据的临时副本,使得其他用户对数据的改动不会影响你的数据。
Dynamic游标(动态游标)允许你看到其他用户对数据的修改和删除操作,而且你可以在整个记录集之内自由地移动。与Static和Forward Only游标不同,Dynamic游标不要求数据源维护一份数据的静态映像,因此Dynamic游标要比前两种游标快。
最后一种游标类型是Keyset游标(键集游标)。Keyset游标与Dynamic游标非常相似,不同之处在于你不能看到其他用户新增的记录。在Keyset游标中,其他用户删除的记录也将不可访问。和Dynamic游标一样,Keyset游标中你也可以看到其他用户的修改。Keyset游标可能要比Dynamic游标快,这是因为Keyset游标不需要经常地去检查是否有新记录加入、是否有记录被删除(因为新增的记录不可见,被删除的记录变成不可访问)。
考虑每一个理由,然后再选择适合你的游标类型。
六、手工构造参数
当性能因素很重要时,请手工定义参数:
Dim con As ADODB.Connection
Dim com As ADODB.Command
Dim par As ADODB.Parameter
Dim rst As ADODB.Recordset
Set con = New ADODB.Connection
con.Open "Provider=SQLOLEDB;" & "Server=localhost;" _
& "Initial Catalog=Northwind;" & "User ID=sa;"
Set com = New ADODB.Command
Set com.ActiveConnection = con
Set par = com.CreateParameter ("CategoryName", adVarWChar, _
adParamInput, 15)
com.Parameters.Append par
Set par = com.CreateParameter ("OrdYear", adVarWChar, _
adParamInput, 4)
com.Parameters.Append par
com.CommandText = _
"EXECUTE SalesByCategory 'Produce', '1997'"
Set rst = com.Execute
' 执行一些操作'
rst.Close
con.Close
Set com = Nothing
Set rst = Nothing
Set con = Nothing
采用手工方式定义参数之后,ADO不必为了找出存储过程的参数列表而去查询数据源。当用户只执行一个查询过程且对存储过程执行时间要求不高时,这一点不是很重要;但是,如果用户要执行大量的存储过程,而且希望能够立即得到答案,那么这一点就很重要了。
七、用Stream对象构造缓存
Stream对象可以在没有物理数据源的情况下使用。你可以利用这个对象在本地机器的内存中创建缓存。用法很简单,只需先创建Stream对象的实例,然后就可以开始写入数据:
Dim str As ADODB.Stream
Set str = New ADODB.Stream
str.Open
str.WriteText "这是文本信息,"
str.WriteText "我们希望它保留在"
str.WriteText "内存中。", adWriteLine
str.WriteText "这是第二"
str.WriteText "行", adWriteLine
MsgBox "缓存中共有" & _
str.Size & "个字符"
str.Position =
三、使用动态属性
Connection对象的Properties集合可用来设置供应商特有的选项,比如SQL Server的OLE DB驱动程序的Prompt动态属性。
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Provider = "SQLOLEDB"
con.Properties("Prompt") = adPromptAlways
con.Open
' 提示用户选择数据库'
con.Close
Set con = Nothing
上述代码运行时,用户将看到一个对话框,这个对话框允许用户选择要登录到哪一个数据库。
四、明智地选择游标位置
选择游标的位置时,你必须考虑对于当前连接来说哪些服务比较重要。
如果数据提供者的服务正是你所需要的,你应该使用服务器端游标。这些服务是数据源驱动程序提供的服务,它们通常具有非常好的可伸缩性。另外,通过保留服务器端游标,你无需象使用客户端游标那样总是把全部的数据发送到客户端。
另一方面,本地游标服务,例如Microsoft数据形状服务for OLE DB,能够提供一些客户端游标特有的服务。要让这些服务能够起作用,数据必须发送到本地机器上,正如数据形状服务所要求的一样。
你可以用Connection.CursorLocation属性设置游标的位置,但选择应该明智、慎重。
五、明智地选择游标类型
选择游标的类型与选择游标的位置同样重要。游标共有四种类型,每一种类型都有各自的优点和缺点。
Static游标(静态游标)提供了数据在给定时刻的一个快照。在这种类型的游标中,数据改动(包括其他用户的数据增加或者删除操作)总是不可见。static游标用来制作报表很理想,因为制作报表需要有数据的一个一致的、不会变化的视图,但static游标不一定速度最快。由于数据的改变不会显示出来,对于每一个使用static游标的连接,服务提供者必须分别为它创建和维护一份给定时刻的数据副本。
Forward Only游标(只能向前的游标)与静态游标基本相同,不同之处在于你只能向前移动访问数据,但不能向后。与Static游标相比,这个限制有利于提高性能,但它仍旧要求数据源维护一个数据的临时副本,使得其他用户对数据的改动不会影响你的数据。
Dynamic游标(动态游标)允许你看到其他用户对数据的修改和删除操作,而且你可以在整个记录集之内自由地移动。与Static和Forward Only游标不同,Dynamic游标不要求数据源维护一份数据的静态映像,因此Dynamic游标要比前两种游标快。
最后一种游标类型是Keyset游标(键集游标)。Keyset游标与Dynamic游标非常相似,不同之处在于你不能看到其他用户新增的记录。在Keyset游标中,其他用户删除的记录也将不可访问。和Dynamic游标一样,Keyset游标中你也可以看到其他用户的修改。Keyset游标可能要比Dynamic游标快,这是因为Keyset游标不需要经常地去检查是否有新记录加入、是否有记录被删除(因为新增的记录不可见,被删除的记录变成不可访问)。
考虑每一个理由,然后再选择适合你的游标类型。
六、手工构造参数
当性能因素很重要时,请手工定义参数:
Dim con As ADODB.Connection
Dim com As ADODB.Command
Dim par As ADODB.Parameter
Dim rst As ADODB.Recordset
Set con = New ADODB.Connection
con.Open "Provider=SQLOLEDB;" & "Server=localhost;" _
& "Initial Catalog=Northwind;" & "User ID=sa;"
Set com = New ADODB.Command
Set com.ActiveConnection = con
Set par = com.CreateParameter ("CategoryName", adVarWChar, _
adParamInput, 15)
com.Parameters.Append par
Set par = com.CreateParameter ("OrdYear", adVarWChar, _
adParamInput, 4)
com.Parameters.Append par
com.CommandText = _
"EXECUTE SalesByCategory 'Produce', '1997'"
Set rst = com.Execute
' 执行一些操作'
rst.Close
con.Close
Set com = Nothing
Set rst = Nothing
Set con = Nothing
采用手工方式定义参数之后,ADO不必为了找出存储过程的参数列表而去查询数据源。当用户只执行一个查询过程且对存储过程执行时间要求不高时,这一点不是很重要;但是,如果用户要执行大量的存储过程,而且希望能够立即得到答案,那么这一点就很重要了。
七、用Stream对象构造缓存
Stream对象可以在没有物理数据源的情况下使用。你可以利用这个对象在本地机器的内存中创建缓存。用法很简单,只需先创建Stream对象的实例,然后就可以开始写入数据:
Dim str As ADODB.Stream
Set str = New ADODB.Stream
str.Open
str.WriteText "这是文本信息,"
str.WriteText "我们希望它保留在"
str.WriteText "内存中。", adWriteLine
str.WriteText "这是第二"
str.WriteText "行", adWriteLine
MsgBox "缓存中共有" & _
str.Size & "个字符"
str.Position =
| 对此文章发表了评论 |
