WEB开发技术 第五章
5.2 ADO组件之 Connection对象
From,吴教育
Email,wujiaoyu@21cn.com
Q Q,188128997
课程引入与回顾
? 数据库访问技术概述
? ADO组件
目标
? 利用 connection对象来与数据库建立连接,
并进行简单的数据库操作
connection对象作用
? 一般用来与数据库建立连接
? 也可用来查询、添加、删除或修改数据库
中的记录
? 还可用来进行事务处理
? 建立 connection对象语法
– Set 对象名
=server.createobject(“adodb.connection”)
connection对象的常见属性
属 性 说 明
Commandtimeou
t
Execute方法的最长执行时间
Connectionstring 指定 connection对象的数据库连接信息
Connectiontimeo
ut
Open方法与数据库连接的最长时间
Errors(集合属性 ) 包含在数据库操作过程中所产生的所有
错误对象
connection对象的常用方法
方 法 说 明
Close 关闭与数据库的连接及相关对象
execute 执行指定的 sql语句、存储过程等
open 打开到数据库的连接
BeginTrans 开始事务处理
CommitTrans 提交事务处理结果
RollbackTrans 取消事务处理结果
利用 OPEN方法建立与数据库的连接
? 语法:
– connection对象名,open,参数 1=value1;参数
2=value2;……”
常见参数如下
参数 说明
User 数据库登录账号
Password 数据库登录密码
Dsn Odbc数据源名
driver 数据库驱动类型
dbq 数据库文件
provider 数据提供者
Data source 数据库文件
通过 ODBC数据源进行连接
1)首先设置数据源
2)然后就可利用数据源名来建立连接,如下所示
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open,数据源名”,“用户名”,“密码”
或 conn.Open,Dsn=数据源名 ;uid=用户名 ;pwd=密码”
示例 1:用 DSN连接 ACCESS数据库
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "dsn=accesstest"
Set rs = conn.Execute( "select * from score" )
%>
<HTML>
<BODY bgcolor="#6699dd">
db1.mdb 数据库“成绩单”数据表七栏的表头,<ul>
<%
For I = 0 to rs.fields.count-1
Response.Write "<LI>" & rs(I).Name & "&nbsp;" & rs(i)
Next
%>
</ul>
</BODY>
</HTML>
示例 2:用 DSN连接 SQL SEVER数据库
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Dsn=sqltest;Uid=gfg;Pwd=gfg"
Set rs = conn.Execute( "select * from table1" )
%>
<HTML>
<BODY bgcolor="#6699dd">
table1的表头,<ul>
<%
For I = 0 to rs.fields.count-1
Response.Write "<LI>" & rs(I).Name & "&nbsp;" & rs(i)
Next
%>
</ul>
</BODY>
</HTML>
利用 driver和 dbq参数连接
对于 Access数据库
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open,driver={Microsoft Access Driver (*.mdb)};
dbq=c:\test\database\db1.mdb”
考虑到程序的可移植性,可改为:
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &
Server.MapPath("db1.mdb")
对于 SQL数据库
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open,driver={SQL Server};server=服务器名 ;database=数据库名 ;uid=用
户名 ;pwd=密码”
示例 3:连接 ACCESS数据库
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &
Server.MapPath("db1.mdb")
Set rs = conn.Execute( "select * from score" )
%>
<HTML>
<BODY bgcolor="#6699dd">
db1.mdb 数据库“成绩单”数据表七栏的表头,<ul>
<%
For I = 0 to rs.fields.count-1
Response.Write "<LI>" & rs(I).Name & "&nbsp;" & rs(i)
Next
%>
</ul>
</BODY>
</HTML>
示例 4:连接 SQL SERVER数据库
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={SQL
Server};Server=127.0.0.1;Database=test;Uid=gfg;Pwd=gfg"
Set rs = conn.Execute( "select * from table1" )
%>
<HTML>
<BODY bgcolor="#6699dd">
table1的表头,<ul>
<%
For I = 0 to rs.fields.count-1
Response.Write "<LI>" & rs(I).Name & "&nbsp;" & rs(i)
Next
%>
</ul>
</BODY>
</HTML>
利用 provider和 data source参数连接
对于 Access数据库
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open,provider=microsoft.jet.oledb.4.0;data source="
& Server.MapPath("db1.mdb")
对于 SQL数据库
Set conn = Server.CreateObject("ADODB.Connection")
StrCnn = "Provider=sqloledb;User ID=用户名 ; Password=密码 ; Initial Catalog=
数据库名 ; Data Source=服务器名 "
conn.Open strCnn
示例 5-1:连接 ACCESS数据库
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open,provider=microsoft.jet.oledb.4.0;data source=" &
Server.MapPath("db1.mdb")
Set rs = conn.Execute( "select * from table1" )
%>
<HTML>
<BODY bgcolor="#6699dd">
table1的表头,<ul>
<%
For I = 0 to rs.fields.count-1
Response.Write "<LI>" & rs(I).Name & "&nbsp;" & rs(i)
Next
%>
</ul>
</BODY>
</HTML>
示例 5-2:连接 SQL SERVER数据库
<%
Set conn = Server.CreateObject("ADODB.Connection")
StrCnn = "Provider=sqloledb;User ID=gfg; Password=gfg; Initial Catalog=test; Data
Source=127.0.0.1"
conn.Open strCnn
Set rs = conn.Execute( "select * from table1" )
%>
<HTML>
<BODY bgcolor="#6699dd">
table1的表头,<ul>
<%
For I = 0 to rs.fields.count-1
Response.Write "<LI>" & rs(I).Name & "&nbsp;" & rs(i)
Next
%>
</ul>
</BODY>
</HTML>
利用 execute方法执行各种 sql语句
? 语法,conn.execute commandtext,recordsaffected,options
– Commandtext是操作字符串,可为 sql语句、表名、存储过程等
– Recordsaffected是可选参数,返回此操作所影响的记录数目
– Options可选参数,指示 commandtext参数的类型信息,如下表所示
adcmdtext 说明 commandtext为 SQL命令
adcmdtable 说明 commandtext为一个表名
adcmdstoredpr
oc
说明 commandtext为存储过程
adcmdunknow
n
说明 commandtext为未知类型
-----
Execute方法 – 添加记录
<%
'连接数据库
set conn=Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="
& Server.MapPath("db1.mdb")
'将 SQL语句赋值给字符串变量
strSql = "Insert into score(id,name,gre,toefl,tse,twe,asp)
Values(4,‘zhang shan',75,50,78,98,58)“
'当插入数据库出错时,可通过输出该 SQL语句,查看该 SQL语句的问题
'Response.Write (strSql)
'执行该 SQL语句
conn.Execute (strSql)
Response.Write("命令已执行 ")
%>
Execute 方法 – 更新记录
<%
'连接数据库
set conn=Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="
& Server.MapPath("db1.mdb")
'将 SQL语句赋值给字符串变量
strSql="Update score set gre =100 Where id=4 "
'当更新数据库出错时,可通过输出该 SQL语句,查看该 SQL语句的问题
'Response.Write (strSql)
'执行该 SQL语句
conn.Execute (strSql)
Response.Write("命令已执行 ")
%>
Execute 方法 – 删除记录
<%
'连接数据库
set conn=Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="
& Server.MapPath("db1.mdb")
'将 SQL语句赋值给字符串变量
strSql= "Delete from score Where id=4 "
'Response.Write (strSql)
'执行该 SQL语句
conn.Execute (strSql)
Response.Write("命令已执行 ")
%>
利用 connection对象 进行事务处理
? 事务处理的功能
– 将多个逻辑上关联的处理步骤作为一个整体,要么都
成功,要么都不成功,以保证数据的一致性
? Connection对象中关于事务处理的方法:
– BeginTrans 开始一个新事务,在调用 CommitTrans
和 RollbackTrans 前不会提交任何更改。
– CommitTrans 更改至数据库,并结束当前事务。
– RollbackTrans 取消当前事务中所做的更改,并结束
当前事务。
事务处理示例 示例 9
<%
On Error Resume Next '如果发生错误,跳过执行下一句
Dim db,strConn
strConn="Dbq=" & Server.Mappath("address.mdb") & ";Driver={Microsoft Access
Driver (*.mdb)}"
Set db=Server.CreateObject("ADODB.Connection")
db.Open strConn
db.BeginTrans '开始事务处理
strSql="Delete From users Where name='李玫 '"
db.Execute(strSql)
strSql="Insert Into users(name,tel,email) Values('李玫
','9999999','limei@263.net')"
db.Execute(strSql)
If db.Errors.Count=0 Then '如果无错误,就执行
Db.CommitTrans '提交事务处理结果
Response.Write "成功执行 "
Else
Db.RollbackTrans '如果有错误,则取消事务处理结果
Response.Write "有错误发生,取消处理结果 "
End If
%>
Error对象和 Errors集合
? Error对象又称为错误对象,是 Connection
对象的子对象。数据库程序运行时,一个
错误就是一个 Error对象,所有的 Error对象
就组成了 Errors集合,又称错误集合。
? Error对象和 Errors集合的关系
– 汽车和车队的关系
– 士兵和军队的关系
Errors集合的属性和方法
? 属性
– Count 返回集合中错误的个数。
如,Connection对象,Errors.Count
? 方法
– Item 用来返回一个错误对象,
如,Set Error对象 = Connection对象,Errors.Item(错误索
引值 )
– Clear 清除集合中的所有错误,
如,Connection对象,Errors.Clear
Error对象属性
? Number 错误编号,如 3251,3246等
? Description 错误描述
? Source 错误原因
? HelpContext 错误的帮助提示文字
? HelpFile 错误的帮助提示文件
? NativeError 服务器端产生的原始错误
Error对象 示例
<%
Dim db,rs,strSql
On Error Resume Next '请注意这句话,发生错误后,继续执行下一句
Set db=Server.CreateObject("ADODB.Connection")
db.Open "Dsn=addr2" '故意给一个错误的数据源
Dim I,err
For I =0 To db.Errors.Count-1 '循环输出所有的错误对象
Set err=db.Errors.Item(I) '建立 Error对象 err
Response.Write "错误编号," & err.Number & "<br>"
Response.Write "错误描述," & err.Description & "<br>"
Response.Write "错误原因," & err.Source & "<br>"
Response.Write "提示文字," & err.HelpContext & "<br>"
Response.Write "帮助文件," & err.HelpFile & "<br>"
Response.Write "原始错误," & err.NativeError & "<br>"
Next
%>
参考资料
? <<ASP动态网站编程 >> 石志国 清华大学出版社
? <<ASP精解案例教程 >> 石志国 清华大学出版社
? <<ASP网络编程技术与实例 >> 胡标 人民邮电出版社
? <<网络程序设计 -ASP>> 尚俊杰 清华大学出版社
总结
? 总体上了解数据库的访问技术
? 利用 connection对象来与数据库建立连接,
并进行简单的数据库操作
习题与作业
1.利用 connection对象, 通过 ODBC数据源与上次
课所做 access的学生基本信息库建立连接, 显
示第一个学生的信息
2.利用 connection对象, 通过指定驱动程序的方
式与上次课所建立的 sql server中的学生成绩 库建
立连接, 并以表格的形式显示所有学生成绩 。