主讲:史治平 地址:四川电大计算机教研室 电话:028-87768609 邮件:szp@scrtvu.net 第七章 ADO访问数据库 主讲:史治平 地址:四川电大计算机教研室 电话:028-87768609 邮件:szp@scrtvu.net
ADO工作原理 ODBC OLEDB 服务器 客户机 数据库 服务器 浏览器 ASP ADO
ADO对象 Connection:用于创建ASP脚本和指定数据库的连接。 Command: 负责对数据库提供请求,也就是传递指定的SQL命令。 RecordSet:负责浏览和操作从数据库中取得的数据。 Field:指定RecordSet对象的数据字段。 Error:记录连接过程中所有发生的错误信息。 Parameter: 负责传递Command对象所需要的SQL命令参数。
制作步骤 创建数据库 创建数据源 编写文件
制作实例 聊天室功能演示 创建数据库chatroom.mdb包含数据表UserOnLine 创建ODBC数据源chatroom 编写文件 chatroominsert.asp(7-1.asp) chatroomselect.asp
数据库chatroom.mdb 与数据表UserOnLine
创建ODBC数据源chatroom
chatroominsert.asp(7-1.asp) <% Set Conn = Server.CreateObject("ADODB.Connection") conn.open "DSN=chatroom" SQLStmt = "INSERT INTO UserOnline (UserID,RoomName) " SQLStmt = SQLStmt & "VALUES ('szp','黄山1')" Set RS = Conn.Execute(SQLStmt) set rs=nothing Conn.Close set conn=nothing %> 执行结果 在数据库chatroom.mdb的数据表UserOnline中增加了一条记录,而在浏览器中没有任何显示。
chatroomselect.asp <% Set Conn = Server.CreateObject("ADODB.Connection") conn.open "DSN=chatroom" SQLStmt = "select * from UserOnLine" Set RS = Conn.Execute(SQLStmt) %> while not RS.EOF Response.Write RS("UserID")&"(" Response.Write RS("RoomName")&")<br>" RS.MoveNext Wend set rs=nothing Conn.Close set conn=nothing 功能是读取数据库中的数据
ADO 英文全称:Active Data Object 主要功能:针对当前Microsoft软件所支持的数据进行操作的最有效、最简单、而且功能最强大的方法。可以简单理解为ASP与数据库之间的一座桥梁。
ODBC/ OLE DB 英文名称:Open DataBase Connectivity 中文名称:开放数据库互连。 现在微软正逐步用OLE DB(对象链接与嵌入式数据库)代替ODBC,提供了对数据更有效的访问。
SQL 英文名称:Structured Query Languge 中文名称:结构化查询语言 功能:SQL语言是关系数据库的标准语言,在ASP中,无论何时要访问一个数据库,都要使用SQL语言。
Connection对象(7-1.asp) 功能: 创建: 使用Server的CreateObject方法。 方法: Open:负责创建与数据源的连接 Close:关闭Connection对象以便释放所有关联的系统资源 Excute:执行SQL语句以及存储过程 BeginTrans CommitTrans RollbackTrans <% Set Conn = Server.CreateObject("ADODB.Connection") conn.open "DSN=chatroom" SQLStmt = "INSERT INTO UserOnline (UserID,RoomName) " SQLStmt = SQLStmt & "VALUES ('szp','黄山1')" Set RS = Conn.Execute(SQLStmt) set rs=nothing Conn.Close set conn=nothing %> 创建对象 初始化连接 产生SQL语句 执行SQL语句 停止连接 释放资源
数据的显示 (accesetable.asp) <% whichDSN="chatroom" call query2table("select * from UserOnline",whichDSN) %> <!--#include file="lib_dbtable.asp"--> 数据源 SQL语句 <% sub query2table(inputquery, inputDSN) dim conntemp, rstemp set conntemp=server.createobject("adodb.connection") conntemp.open inputDSN set rstemp=conntemp.execute(inputquery) howmanyfields=rstemp.fields.count-1 %> 与数据库的连接; 执行SQL语句; 结果存入对象rstemp 字段数量
<tr> … </tr>表格中的行 <td>….</td>表格中的单元格 <% rstemp.movenext '显示下一个字段 loop %> </table> rstemp.close set rstemp=nothing conntemp.close set conntemp=nothing end sub <table border=1><tr> <% for i=0 to howmanyfields %> <td><b><%=rstemp(i).name%></b> </td> <% next %> </tr> 先输出字段名 <% do while not rstemp.eof %> <tr> for i = 0 to howmanyfields thisvalue=rstemp(i) If isnull(thisvalue) then thisvalue=" " end if <td valign=top><%=thisvalue%> </td> <% next %> </tr> 现在取出所有数据 显示所有字段名称 <tr> … </tr>表格中的行 <td>….</td>表格中的单元格
Connection对象 属性 Attributes commandTimeout ConnectionString ConnectionTimeout DefaultDatabase Mode Provider
Command对象 功能: Command接口表示一个可被数据源处理的命令。 创建:使用Server对象的CreateObject方法。 方法:CreateParameter;Direction等 属性:ActiveConnection;CommandText等。