ASP应用程序开发技术探究.docx
《ASP应用程序开发技术探究.docx》由会员分享,可在线阅读,更多相关《ASP应用程序开发技术探究.docx(8页珍藏版)》请在冰豆网上搜索。
ASP应用程序开发技术探究
ASP应用程序开发技术探究
摘要:
在介绍ASP技术的本质和特点的基础上,从应用系统的结构设计、数据库设计和程序设计等方面详细分析、归纳了常用的ASP应用程序的开发技巧。
以Web数据库编程为实例论述了使用广泛且重要的ADO编程技术。
关键词:
ASP;数据库;ADO
1ASP应用程序开发技巧
1.1ASP应用系统的结构设计
ASP程序有个最大的缺陷,即脚本代码与HTML标记混在了一起。
程序员既要考虑业务处理和数据库的访问还得关心与HTML的整合。
当程序逻辑足够复杂时,源文件过于冗长,降低了系统维护的效率。
鉴于此,我们可以设计三层架构体系的ASP程序,即将应用划分为用户界面层、业务逻辑层和数据库层。
用户界面层负责用户的输入和输出;业务逻辑层是上下两层的纽带,它建立实际的数据库连接,根据用户的请求生成SQL语句检索或更新数据库,并把结果返回给客户端,这一层通常以动态链接库的形式存在;数据库层负责实际的数据存储和安全访问控制。
设计三层架构的ASP应用程序的步骤一般是:
建立数据库和数据表;建立动态链接库;注册动态链接库;编写ASP程序。
1.2ADO编程技术
为了进一步扩展ASP应用程序的功能,还必须借助数据库访问组件实现对数据库的访问。
ADO(ActiveXDataObjects)是微软推出的目前最为成熟的数据库技术,利用ADO组件可以在ASP页面上浏览、检索、添加、删除、修改数据库中的数据。
下面以实例剖析ADO对象模型中的3个主要对象,即Connection、Recordset、Command对象。
1.2.1Connection对象
Connection对象是与数据库连接的对象,它不仅可以实现与多种数据库的连接,也可使用其方法对数据库进行各种各样的操作。
(1)创建数据库连接。
首先应使用Server对象的CreateObject方法创建该对象的实例,然后使用Connection对象的Open方法来初始化连接。
下面介绍常用数据库的连接方法。
ODBC的连接方式
方法一:
创建系统数据源,将连接信息保存在Windows注册表中
Connection对象名.connectionstring=“DSN=数据源名;UID=用户名;PWD=密码”
Connection对象名.open
方法二:
创建文件数据源,将连接信息保存在文本文件中
Connection对象名.connectionstring=“FILEDSN=数据源名;UID=用户名;PWD=密码”
Connection对象名.open
方法三:
将连接信息保存在字符串中
连接SQLServer数据库:
Connection对象名.connectionstring=“{driver=SQLServer};server=服务器名;database=数据库名;UID=用户名;PWD=密码”
Connection对象名.open
连接Access数据库:
Connection对象名.connectionstring=“driver={microsoftaccessdriver(*.mdb)};DBQ=”&server.mappath(“数据库的相对路径”)
Connection对象名.open
OLEDB的连接方式
连接SQLServer数据库:
Connection对象名.connectionstring=“provider=sqloledb;datasource=服务器名;database=数据库名;UID=用户名;PWD=密码”
Connection对象名.open
连接Access数据库:
Connection对象名.connectionstring=“provider=Microsoft.Jet.OLEDB.4.0;
datasource=”&server.mappath(“数据库的相对路径”)
Connection对象名.open
(2)编辑数据
<%
DimconStr,myConn,sqlAdd,sqlDel,sqlModi
SetmyConn=Server.CreateObject(“ADODB.Connection”)
conStr=“provider=sqloledb;datasource=(local);database=图书管理;UID=sa;PWD=”
myConn.connectionstring=conStr
myConn.open
sqlAdd=”insertinto学生信息(学号,姓名,性别,专业)values(‘0217’,’李开复’,‘男’,’计算机’)”
sqlDel=”deletefrom学生信息where学号=’0219’”
sqlModi=”update学生信息set专业=‘自动化’where学号=’0216’”
myConn.executesqlAdd
myConn.executesqlDel
myConn.executesqlModi
myConn.close
setmyConn=nothing
%>
1.2.2Recordset对象
该对象包含了从数据库中查询到的记录的集合,不仅可以访问记录中的字段值,还能对数据库进行操作。
(1)创建记录集
方法一:
调用Connection对象的Execute方法,主要代码如下:
<%
dimcon,sqlQuery,rst
’数据库连接语句省略
Setrst=Server.CreateObject(“ADODB.Recordset”)
sqlQuery=”select*from学生信息where性别=’男’”
setrst=con.executesqlQuery
con.close
rst.close
%>
方法二:
调用Recordset对象的Open方法打开记录集,主要代码如下:
<%
dimcon,sqlQuery,rst
’数据库连接语句省略
Setrst=Server.CreateObject(“ADODB.Recordset”)
sqlQuery=”select*from学生信息”
rst.opensqlQuery,con,1,1
con.close
rst.close
%>
(2)检索数据
<%
dimconstr,sql,rst
’连接字符串省略
Setrst=Server.CreateObject(“ADODB.Recordset”)
sql=”select*from学生信息where姓名like‘刘%’”
rst.ActiveConnection=constr
rst.opensql,,1,
response.write“”
response.write“
学号 | 姓名 | 专业 |
”
dowhilenotrst.eof
response.write“
”&rst(“学号”)&” | ”&rst(“姓名”)&” | ”&rst(“专业”)&” |
”
rst.movenext
loop
response.write“”
rst.close
%>
(3)编辑数据。
Recordset对象能通过其方法编辑数据,但效率要比Execute方法低得多。
<%
dimconn,rec
’数据库连接语句省略
rec.open“select*from学生信息”,conn,1,3
’添加记录
rec.AddNew
rec(“学号”)=‘0219’
rec(“姓名”)=‘李小芳’
rec(“性别”)=‘女’
rec(“专业”)=‘英语’
rec.Update
rec.close
’删除记录
rec.open“select*from学生信息where专业=‘市场营销’”,conn,1,3
dowhilenotrec.eof
rec.delete
rec.movenext
loop
rec.close
’修改记录
rec.open“select*from学生信息where学号=‘0219’”,conn,1,3
ifnotrec.eof
rec(“专业”)=‘法律’
rec.update
endif
rec.close
%>
1.2.3Command对象
Command对象使用Execute方法执行SQL语句,最大的优势是能通过其Parameter对象向参数化查询传递数据。
使用Command对象处理数据时,应首先设置命令类型、命令文本、活动数据库连接,若执行参数化查询,则需要创建Parameter对象,并设置其Value属性值。
<%
dimconn,mysql,cmd
setcmd=Server.CreateObject(“ADODB.Command”)
’数据库连接语句省略
setcmd.ActiveConnection=conn
cmd.CommandType=adCmdText
mysql=”insertinto学生信息(学号,姓名,性别,专业)values(‘0211’,?
?
‘机械’)”
cmd.CommandText=mysql
’创建两个Parameter对象
setprmName=cmd.CreateParameter(“xm”,adChar,adParamInput,10)
setprmSex=cmd.CreateParameter(“sex”,adChar,adParamInput,1)
’将Parameter对象对象添加到Parameters集合中
cmd.Parameters.AppendprmName
cmd.Parameters.AppendprmSex
’从表单中获取参数的值
prmName.value=request.form(“stuname”)
prmSex.value=request.form(“stusex”)
’执行Insert命令
cmd.execute
%>
1.3ASP编码优化
1.3.1声明VBScript变量
在VBScript中变量