您的位置: 大智教程网 > 网站开发教程 > ASP > 正文
ASP入门基础教程-Connection 对象
2009-09-13 16:26  来源: 大智教程网

返回"ASP入门基础教程"目录

提示:请将符号常量包含文件 adovbs.inc 复制到您的站点主目录上,该文件所在位置:C:Program FilesCommon FilesSystemado (假设您的系统装在C盘下)。该文件包含与ADO一起使用的符号常量的定义清单。

6-1-1 Connection 对象

1、Connection 对象简述

Connection 对象代表了打开的、与数据源的连接,好象在应用程序和数据库中建立了一条数据传输连线,该对象代表与数据源进行的惟一会话。ASP 使用 ADO 对各种数据源进行各种操作,其中,Connection 对象是必不可少的,在这个基础上可以使用 Command 对象及 Recordset 对象来对 Connection 对象所连接的数据库进行插入、删除、更新和查询等操作。

2、Connection 对象的常用属性

Connection 对象的常用属性 <表>

属 性 描 述
CommandTimeout 这义了使用 Execute 方法运行一条 SQL 命令的最长时限,能够中断并产生错误。默认值为30秒,设定为0表示没有限制。
ConnectionString 设定连接数据源的信息,包括 FlieName、Password、Userld、DataSource、Provider 等参数。
ConnectionTimeout 设置在终止尝试和产生错误前建立数据库连接期间所等待的时间,该属性设置或返回指示等待连接打开的时间的长整型值(单位为秒),默认值为15。如果将该属性设置为0,ADO 将无限等待直到连接打开。
DefaultDatabase 定义连接默认数据库。
Mode 建立连接之前,设定连接的读写方式,决定是否可更改目前数据。0 一 不设定(默认)、1 一 只读、2 一 只写、3 一 读写。
Provider 设置连接的数据提供者(数据库管理程序),默认值是 MSDASQL (Microsot-ODBC For OLEDB)
State 读取当前链接对象的状态,取0表示关闭,1表示打开。

3、Connection 对象的方法

Connection 对象的方法<表二>
方  法 描述 / 格式 / 注解
Open 建立一个与数据源的连接对象。
Connobject.Cpen connectionstring,UserID,Password
1、Connectionstring 为可选参数,它是一个字符串变量,包含连接的信息。

  2、UserID 为可选参数,它是一个字符串变量,包含建立连接时访问数据库使用的用户名称。

  3、Password 为可选参数,它是一个字符串变量 ,包含建立连接时访问数据库使用的密码。

Close 关闭与数据源的连接,并且释放与连接有关的系统资源。
Connobject.close
使用 Close 方法关闭 Connection 对象,并没有从内存删除该对象。因此一个关闭的 Connection 对象还可以用 Open 方法打开而不必再次创建一个 Connection 对象。此外,在使用 Close 方法关闭连接时,也将关闭与此连接的所有活动的 Recordset 对象。但是,与此连接相关的 Command 对象将不受影响,只不过 Command 对象不再参与这个连接。可以使用:

  Set Connobject=nothing 命令释放 Connection 对象所占用的所有资源。

Execute 执行 SQL 命令或存储过程,以实现与数据库的通信。
有返回记录的格式:Set Rs=Connobject.Execute(CommandText,RecordsAffected,Options)

  无返回记录的格式: Connobject.Execute CommandText,RecordsAffected,Options

CommandType 是一个字符串,它包含一个表名,或某个将被执行的 SQL 语句; 

  RecordsetAffected 为可选参数,返回此次操作所影响的记录数。

  Options 为可选参数,用来指定 CommandText 参数的性质,即用来指定 ADO 如何解释 CommandText 参数的参数值,如下表:

Options值 意义描述
1 表示被执行的字符串包含一个命令文本。
2 表示被执行的字符串包含一个表名。
4 表示被执行的字符串包含一个存储过程名。
8 没有指定字符串的内容(这是默认值)
BeginTrans 开始一个新的事务,即在内存中为事务开辟一片内存缓冲区。
CommitTrans 提交事务,即把一次事务中所有变动的数据从内存缓冲区一次性地写入硬盘,结束当前事务并可能开始一个新的事务。
RollbackTrans 回滚事务,即取消开始此次事务以来对数据源的所有操作,并结束本次事务操作。

4、创建数据库连接步骤如下

a) 创建 Connection 对象实例,格式如下:

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

b) 指定连接字符串

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:MardetData sg1.mdb"

'创建 OLEDB 连接字符串

CS="Provider=Microsoft.jet.OLEDB;4.0;Data Source="
conn.ConnectionStrin=CS & Server.MapPath("rsgl.mdb")

注:连接字符串在等号(=)的左右都不包含空格。

c) 打开数据库连接

Connobject.Cpen connectionstring,UserID,Password

d) 关闭与数据源的连接

object.Close

e) 释放 Connection 对象所占用的所有资源

Set Connobject=nothing

5、Connection对象的方法和属性的简单应用实例

1)、使用Connection对象的Execute方法在rsgl.mdb数据库中创建一个名为“员工基本情况表”。其代码如下(etable) :

<% @ Language="VBScript" %>
<html>
<head>
<title>在ASP页面上创建新表</title>
</head>
<body>
<div align="center">
<h3>在ASP页面上创建新表</h3>
<hr width="50%" color="#cccc99">
<p>正在创建表......</p>
</div>
<!-- #include virtual ="/adovbs.inc" -->
<%
dim cnn,sSQL
set cnn=Server.CreateObject("ADODB.Connection")
'指定连接字符串,默认数据库为master
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("rsgl.mdb")
cnn.Open
sSQL="CREATE table 员工基本情况表(员工姓名 varchar(10),所在部门 varchar(10),家庭住址 varchar(12),家庭电话 varchar(15),Email varchar(20))"
'执行create database命令
cnn.Execute sSQL,,adCmdText
cnn.Close
set cnn=Nothing
%>
<p><center><b>创建表成功!</b></center></p>
</body>
</html>

2)、(添加记录页面)实例通过一个表单页面(eRs.htm),将数据提交给添加记录处理页面(eRs.asp),在该页面中,通过使用Connection对象的Execute方法执行Insert命令,在表尾添加一个新记录。eRs.htm代码如下:

<html>
<head><title>添加记录页面</title></head>
<body>
<form name="form1" method="post" action="eRs.asp">
<table align="center" border="1">
<tr><td colspan="2" align="center">添加记录表</td></tr>
<tr><td align="right">员工姓名:</td><td width="150"><input type="text" name="txtname"></td></tr>
<tr><td align="right">所在部门:</td><td><input type="text" name="txtbm"></td></tr>
<tr><td align="right">家庭住址:</td><td><input type="text" name="txtzz"></td></tr>
<tr><td align="right">家庭电话:</td><td><input type="text" name="txtTel"></td></tr>
<tr><td align="right">Email:</td><td><input type="text" name="txtEmail"></td></tr>
<tr><td align="center"><input type="submit" value="提交"></td><td align="center"><input type="reset" value="全部重写"></td></tr>
</table>
</form>
</html>

eRs.asp页面的代码如下:

<html>
<head><title>添加记录页面</title></head>
<body>
<form name="form1" method="post" action="eRs.asp">
<table align="center" border="1">
<tr><td colspan="2" align="center">添加记录表</td></tr>
<tr><td align="right">员工姓名:</td><td width="150"><input type="text" name="txtname"></td></tr>
<tr><td align="right">所在部门:</td><td><input type="text" name="txtbm"></td></tr>
<tr><td align="right">家庭住址:</td><td><input type="text" name="txtzz"></td></tr>
<tr><td align="right">家庭电话:</td><td><input type="text" name="txtTel"></td></tr>
<tr><td align="right">Email:</td><td><input type="text" name="txtEmail"></td></tr>
<tr><td align="center"><input type="submit" value="提交"></td><td align="center"><input type="reset" value="全部重写"></td></tr>
</table>
</form>
</html>

3)、(搜索记录页面)本实例通过Connection对象的Execute方法,执行一条SQL查询语句,并返回一个符合查询条件的记录集对象,然后使用While...Wend循环语句将记录集内的所用记录填写到表格中。其代码如下(eshousho.asp):

<% @ Language="VBScript" %>
<html>
<head>
<title>从数据库表中检索数据</title>
</head>
<body>
<!-- #include virtual ="/adovbs.inc" -->
<center>
<form name="form1" method="post" action="eShousho.asp">
<select size="1" name="lst">
<option selected value="">请选择部门</option>
<option value="教务处">教务处</option>
<option value="英语教研室">英语教研室</option>
<option value="语文教研室">语文教研室</option>
<option value="数学教研室">数学教研室</option>
<option value="财务处">财务处</option>
</select>
<input type="submit" value="提交">
</form>
</center>
<%
dim lst
lst=trim(request.form("lst"))
%>
<%
dim cnn,sSQL,rst,i
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
'指定连接字符串,默认数据库为master
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("rsgl.mdb")
cnn.Open
if lst="" then
sSQL="select * from 员工基本情况表"
else
sSQL="select * from 员工基本情况表 where 所在部门=" & "'" & lst & "'"
end if
'执行SQL查询命令
set rst=cnn.Execute(sSQL,,adCmdText)
if rst.eof then
response.write "<p><center><b>没有找到符合条件的记录</b></center></P>"
else
%>
<table align="center" border="1">
<caption><h3>从数据库表中检索数据</h3></caption>
<tr><th>员工姓名</th><th>所在部门</th><th>家庭住址</th><th>家庭电话</th><th>Email</th></tr>
<%
'使用While...Wend循环语句将记录集内的所用记录填写到表格中。
While not rst.EOF
%>
<tr><td><%=rst("员工姓名")%></td><td><%=rst("所在部门")%></td><td><%=rst("家庭住址")%></td><td><%=rst("家庭电话")%></td><td><%=rst("Email")%></td></tr>
<%
'移动到记录集内的下一条记录并使该记录成为当前记录。
rst.MoveNext
Wend
end if
cnn.Close
set cnn=Nothing
%>
</table>
</body>
</html>

4)、(更改记录页面)本实例通过Connection对象的Execute方法,执行一条SQL的Update更新语句,更新指定员工的Email ,并返回一个符合条件的记录集对象,然后给出相应的提示。此页面(eUpdata.asp)的代码如下:

<% @ Language="VBScript" %>
<html>
<head>
<title>更改记录</title>
</head>
<body>
<!-- #include virtual ="/adovbs.inc" -->
<!--******************插入一个表单***************-->
<center>
<form name="form1" method="post" action="eUpdata.asp">
请输入员工姓名:
<input type="text" name="txtname" value="">
请输入Email:
<input type="text" name="txtEmail" value="">
<input type="submit" value="提交">
</form>
</center>
<%
'*******************提取表单中的值**************
eEmail=trim(request.form("txtEmail"))
name=trim(request.form("txtname"))
'*******************开始打开数据库**************
dim cnn,sSQL
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
'指定连接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("rsgl.mdb")
cnn.Open
'**************如果name的值为空,即打开网页,则查询所有的记录,并返回记录集。************
if name="" then
sSQL1="select * from 员工基本情况表"
set rst=cnn.Execute(sSQL1,,adCmdText)
%>
<table align="center" border="1">
<caption><h3>教师基本情况表</h3></caption>
<tr><th>员工姓名</th><th>所在部门</th><th>家庭住址</th><th>家庭电话</th><th>Email</th></tr>
<%
'使用While...Wend循环语句将记录集内的所用记录填写到表格中。
While not rst.EOF
%>
<tr><td><%=rst("员工姓名")%></td><td><%=rst("所在部门")%></td><td><%=rst("家庭住址")%></td><td><%=rst("家庭电话")%></td><td><%=rst("Email")%></td></tr>
<%
'移动到记录集内的下一条记录并使该记录成为当前记录。
rst.MoveNext
Wend
%>
</table>
<%
'********如果name不为空,即txtname文本框中已提交了数值,则按员工姓名进行查询**********
else
sSQL1="select * from 员工基本情况表 where 员工姓名='" & name & "'"
set rst=cnn.Execute(sSQL1,,adCmdText)
'------------如果已查找到记录集的尾部,未找到符合条件的记录,则显示一条提示信息。--------------------
if rst.eof then
response.write "<p><center><b>没有找到符合条件的记录</b></center></P>"
else
'-------------否则按表单提交的值修改记录---------------
a=rst("Email")
sSQL="Update 员工基本情况表 set Email=" & "'" & eEmail & "' where 员工姓名='" & name & "'"
'执行Update命令
cnn.Execute sSQL,,adCmdText
response.write "<center>" & name & "的Email由原来的" & a & "更改成" & eEmail & "</center>"
%>
<div align="center"><p><b>更改记录成功!</b></div>
<hr width="50%">
<%
end if
end if
cnn.Close
set cnn=Nothing
%>
</body>
</html>

5)、(删除记录页面)本实例通过Connection对象的Execute方法,执行一条SQL的删除语句,删除 由员工姓名指定的记录。其代码如下(eDelete.asp):

<% @ Language="VBScript" %>
<html>
<head>
<title>删除记录</title>
</head>
<body>
<!-- #include virtual ="/adovbs.inc" -->
<form name="form1" method="post" action="eDelete.asp">
<input type="text" name="txtname" value="请输入员工姓名">
<input type="submit" value="提交">
</form>
<%
name=trim(request.form("txtName"))
dim cnn,sSQL
set cnn=Server.CreateObject("ADODB.Connection")
'指定连接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("rsgl.mdb")
cnn.Open
sSQL="Delete from 员工基本情况表 where 员工姓名='" & name & "'"
'向服务器发送Delete 语句。
cnn.Execute sSQL,,adCmdText
response.write "<center>" & name & "的记录已被删除</center>"
cnn.Close
set cnn=Nothing
%>
<div align="center"><p><b>删除记录成功!</b></p>
<hr width="50%">
</div>
</body>
</html>

返回"ASP入门基础教程"目录

[注:]本站部分文章来源网络,如有侵害您的权利请及时通知本站, 本站会即刻删除。QQ:179916975