首页 百科知识 Connection对象及应用

Connection对象及应用

时间:2022-10-15 百科知识 版权反馈
【摘要】:Connection对象是用来建立和管理应用程序与数据库之间的连接,通过调用Connection对象的属性和方法,可以打开、关闭与数据库的连接,并通过适当的命令执行指定的查询等。若要删除该Connection对象,释放与连接有关的内存资源,应用如下语句:ConnectionTimeout属性设置连接数据库的最长等待时间,单位为秒,默认值是15秒。语法格式如下:下面是通过使用ADO组件的Connection对象连接数据库db1.mdb的users数据表,然后从数据表中读取数据的一个ASP网页程序。

7.3.2 Connection对象及应用

Connection对象是用来建立和管理应用程序与数据库之间的连接,通过调用Connection对象的属性和方法,可以打开、关闭与数据库的连接,并通过适当的命令执行指定的查询等。

1. 建立Connection对象

要使用Connection对象,必须先建立一个连接对象实例(Connection对象),而连接对象实例是通过ASP内置对象之一Server对象的CreatObject方法来建立的。语法格式如下:

Set Connection对象名= Server.CreatObject("ADODB.Connection")

例如,Set Conn= Server.CreatObject("ADODB.Connection")

2. Connection对象的方法

1)Open方法与应用

当建立了一个Connection对象后,就可以使用Open方法将该Connection对象通过ODBC与指定数据源(DSN)连接,或以OLE DB方式直接与某个数据库进行连接。

(1)通过ODBC数据源与数据库连接的语法格式如下:

Connection对象名.open "DSN=dsnname; UID=username; PWD=password"

其中,参数dsnname是在Windows“控制面板”->“管理工具”->“数据源(ODBC)”中已建立的数据源名称,username是连接数据源的用户名,password是用户密码。这里未出现数据库名,具体数据库在建立数据源(DSN)时就已经确定好了。

(2)通过OLE DB方式直接连接Access数据库,语法格式如下:

Connection对象名.open "Driver={Microsoft Access Driver (∗.mdb)};

Dbq=path\name.mdb"

其中,path\name.mdb是路径和数据库文件名,注意要采用绝对路径。Open后面的双引号里,用分号隔开的两部分,排列不分先后。例如,

Conn.open "Driver={Microsoft Access Driver (∗.mdb)}; Dbq=

d:\CH-7\db1.mdb "

或 Conn.open "Dbq= d:\CH-7\db1.mdb;Driver={Microsoft Access Driver

(∗.mdb)}"

实际使用中,ASP网页需要移植,移植后的路径可能跟设计时的不一致。为了保证数据库路径的正确性,最好在设计时只书写数据库文件的相对路径,再用server对象的mappath方法来获取实时绝对路径。于是,上述连接变为如下格式:

Conn.open "Driver={Microsoft Access Driver (∗.mdb)};

Dbq="&mappath("db1.mdb")

或 Conn.open "Dbq="&mappath("db1.mdb")&";Driver={Microsoft Access Driver

(∗.mdb)}"

上述“&”是连接符。ADO与其他数据库的连接格式稍有差别,请查看相关参考书。

2)Execute方法与应用

Execute方法负责执行指定的SQL语句,如果执行的是Select语句,则返回一个Recordset对象,该对象中的记录指针只能向下移;也可用来执行那些不返回记录集的语句,如Insert、Update、Delete语句等。语法格式如下:

Connection对象名.Execute comandText [,RecordsAffected] [,Option]

其中,CommandText是要执行的SQL语句(如Select、Insert、Delete、Update等);RecordsAffected是对数据库提出请求时,所返回或者影响的记录数,默认值为0,表示每个满足条件的记录都会受到影响;Option参数用来指定CommandText串的类型,可优化执行性能。

用Execute方法来执行SQL语句(CommandText),分为有括号和无括号两种形式。有括号的格式用来执行有返回记录集的SQL语句,无括号的格式用来执行一个无返回记录集的语句。例如,查询users表中的所有记录信息,采用有括号的格式,代码如下:

Set rs=conn.Execute("select ∗ from users")

说明:conn是前面已建立的Connection对象实例,当执行完这条语句后,就会建立一个Recordset对象rs,rs保存括号中select语句返回的查询结果,即users数据表中的所有记录。

例如,往数据表里插入一条记录,就采用无括号的格式,代码如下:

conn.Execute "insert into users(ID, name, depts)values(6, '王小二','中文系')"

3)close方法

当对某个数据库访问完成后,就可以使用close方法关闭Connection对象与该数据库的连接。语法格式如下:

connection对象名.close

使用close方法关闭连接后,Connection对象(conn)依然存在,可以再次用open方法将该Connection对象与另外一个具体数据库进行连接。若要删除该Connection对象,释放与连接有关的内存资源,应用如下语句:

Set connection对象名=nothing

3. Connection对象的属性及应用

ConnectionTimeout属性设置连接数据库的最长等待时间,单位为秒,默认值是15秒。如设为0,则表示系统将会一直等到连接成功为止。语法格式如下:

Connection对象名.connectiontimeout=10 seconds

说明:该属性的设置必须在连接前或者取消连接后进行,因为在连接成功后,这个属性就成为只读的了。

下面是通过使用ADO组件的Connection对象连接数据库db1.mdb的users数据表,然后从数据表中读取数据的一个ASP网页程序。

------------------------------清单7-1 7-1.asp-----------------------

<%

Dim conn

set conn=Server.CreateObject("ADODB.Connection")

conn.open "Driver={Microsoft Access Driver (∗.mdb)};

Dbq=d:\CH-7\db1.mdb"

set rs=conn.execute("select ∗ from users")

response.write "ID&nbsp;姓名&nbsp; 系别&nbsp;密码&nbsp;级别&nbsp;<br/>" '&是字符串连接符

do while not rs.eof       '指针未指向表的末尾,则执行循环体

Response.write rs("ID")& rs("name")& rs("depts")& rs("pwd")&

rs("grade")& "<br/>"

rs.movenext          '指针指向下一条记录

loop

conn.close            '关闭conn连接

set conn=nothing         '删除连接对象实例conn

%>

--------------------------------------------------------------------

调试结果如图7-12所示。

img458


图7-12 7-1.asp调试结果

从调试结果来看,显示出来的数据,格式不整齐、不美观。如果将这个数据表中读出的记录信息嵌入table表格里,将更加整齐美观。修改ASP网页文件如下。

----------------------------清单7-2 7-2.asp-------------------------

<%

Dim conn

set conn=Server.CreateObject("ADODB.Connection")

conn.open "Driver={Microsoft Access Driver (∗.mdb)};

Dbq=d:\CH-7\db1.mdb"

set rs=conn.execute("select ∗ from users")

Response.write "<table border='1' width='300'

align='center'><tr><th>ID</th> <th>姓名</th><th>系 别</th><th>密码

</th><th>级别</th></tr>"

do while not rs.eof

Response.write

"<tr><td>"&rs("id")&"</td><td>"&rs("name")&"</td><td>"&rs("depts")

&"</td><td>"&rs("pwd")&"</td><td>"&rs("grade")&"</td></tr>"

rs.movenext

loop

Response.write "</table>"

conn.close

set conn=nothing

%>

--------------------------------------------------------------------

调试结果如图7-13所示。

当有多个程序都要对数据库db1.mdb的表users进行操作时,此程序的前三行将会反复用到,可以将这三行代码单独保存为一个ASP文件:

<%

Dim conn

set conn=Server.CreateObject("ADODB.Connection")

conn.open "Driver={Microsoft Access Driver (∗.mdb)}; Dbq=d:\CH-7\db1.mdb"

%>

img459


图7-13 7-2.asp的调试结果

其中,d:\CH-7\db1.mdb是Access数据库在本机里的绝对路径和库文件名。如果将网站拷贝到其他服务器,绝对路径可能不一样,那么Connection连接就会找不到数据库文件。为了保证程序的可移植性,ASP程序里最好只写数据库文件的相对路径,再用Server.MapPath方法获取数据库文件的绝对路径,代码如下。

---------------------------清单7-1-1 conn.asp-----------------------<%

Dim conn

Set conn=Server.CreateObject("ADODB.Connection")

conn.open "Driver={Microsoft Access Driver (∗.mdb)};

Dbq="&Server.MapPath("db1.mdb")

%>

--------------------------------------------------------------------

然后在需要引用该conn连接的ASP文件的第一行,加入如下代码:

<!--#include file="conn.asp" -->

原来的7-2.asp文件,就变为:

--------------------------清单7-2-1 7-2-1.asp-----------------------

<!--#include file="conn.asp" -->

<%

set rs=conn.execute("select ∗ from users")

Response.write "<table border='1' width='300'

align='center'><tr><th>ID</th><th>姓名</th><th>系 别</th><th>密码

</th><th>级别</th></tr>"

do while not rs.eof

Response.write

"<tr><td>"&rs("id")&"</td><td>"&rs("name")&"</td><td>"&rs("depts"

)&"</td><td>"&rs("pwd")&"</td><td>"&rs("grade")&"</td></tr>"

rs.movenext

loop

Response.write "</table>"

conn.close

set conn=nothing

%>

--------------------------------------------------------------------

调试结果与7-2.asp一致。

注意:为了网站数据库的安全,防止他人下载数据库文件,可以把数据库文件名中加一个特殊字符,如"#"等,有一定的防下载作用。还可以把数据库文件命名为"∗.asp",会更安全一些。若要通过ASP命令往数据库中添加、删除或更新记录,数据库文件的属性必须设为可写。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈