【 tulaoshi.com - ASP 】
8.3.3 使用连接状态
将连接字符串存入应用程序变量是一个常用的技巧,同使用一个包含文件一样有效。例如,可以在global.asa文件中加入下面的代码:
Sub Application_OnStart()
strConn = "Provider=SQLOLEDB; Data Source=WATCHER; " & _
"Initial Catalog=pubs; User Id=davids; Password=whisky"
Set Application("ConnectionString") = strConn
End Sub
在ASP页面中,可以使用下面的代码:
Set conPubs = Server.CreateObject("ADODB.Connection")
conPubs.Application("ConnectionString")
从个人的角度,我更喜欢使用包含文件的方法,因为我写了许多不同的连接到各种服务器和数据库的例子。使用应用程序方法将意味着每次必须关闭浏览器重新启动应用程序。读者可以使用自己喜欢的任一种方法,在速度上它们并没有差别。
对于在本书的这节内的例子,将使用一个含有连接字符串的connection.asp文件人作为一个包含文件。
8.3.4 连接语法
上面所叙述的是相关理论,当确实要与数据存储连接时,应该怎么办?如果使用显式定义的Connection对象,可以使用Open方法,它的语法如下:
connection.Open [ConnectionString], [UserID], [Password], [Options]
参数如表8-1所示:
表8-1 Open方法的参数及说明
参 数
说 明
ConnectionString
包含连接细节的字符串。可以是ODBC DSN的名称、数据链接文件的名称或真实的连接细节
UserID
连接期间,用户使用的名字。覆盖连接字符串中提供的任何用户名
Password
用户的口令。覆盖连接字符串中提供的任何口令
Options
可以是adAsyncConnect,指定异步地建立连接。忽略这个参数,则建立一个同步连接
异步连接不用于ASP环境,因为脚本语言不能接收来自ADO的事件。
8.3.5 连接的例子
下面是几个示例,这里假定strConn包含一个有效的连接字符串。
为了打开一个连接,使用Connection对象的Open方法。例如:
Set conPubs = Server.Connection("ADODB.Connection")
conPubs.Open strConn
' Some processing
conPubs.Close
也可以使用ConnectionString属性:
Set conPubs = Server.CreateObject("ADODB.Connection")
conPubs.ConnectionString = strConn
conPubs.Open
' Some processing
conPubs.Close
这两种实现方法之间没有什么区别,如果使用前一种方法来实现连接,ConnectionString属性同时也被赋值。
值得注意的是,一旦与数据存储建立了连接,ADO可能会改变ConnectionString属性值。不必担心,ADO只填写一些额外的属性值。
8.3.6 连接缓冲池
连接缓冲池(connection pool)总使许多人感到困惑,其实原理非常简单。当关闭一个连接,就用户(和ADO)而言,这个连接已经关闭。但实际上OLE DB并没有关闭这个连接,只是将其放入了非活动的连接缓冲池中。任何时候用户(或其他人)打开一个连接,OLE DB首先检测连接缓冲池中是否有相同连接细节的连接存在。如果有,将直接从缓