【ASP】利用数据库操作类优化数据库表的增删改查
来源:互联网 发布:windows正版镜像 编辑:程序博客网 时间:2024/06/05 07:54
在《【ASP】ASP对Access数据库的连接、增删改查及ASP的基本语法》(点击打开链接)中介绍过ASP,也就是VBScript的增删改查,虽然这种写法非常传统,但是,页面的代码比较混乱不容易维护。其实可以利用利用数据库操作类与《【ASP】页面引用与过程调用》(点击打开链接),优化ASP对Access2003的操作。
比如在Access2003数据库有如下的一张user_info表:
我们要在网页上打印出来:
具体如下,
首先,站点的目录结构如下所示:
数据库在站点的根目录。db.asp是数据库操作类,写完这样的一个操作类,以后所有要数据库操作的页面,引用这个文件,调用里面的类方法就可以了。相当于C语言的头文件的角色。具体代码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><%'禁止缓存'Response.CacheControl="no-cache"Response.Expires=-1Response.Charset="UTF-8"'配合第一行设定网页编码''数据库操作类'Class DBPrivate CONN'数据库连接'Private RS'数据库查询结果集'Private Sub Class_Initialize'类的构造过程,进行数据库连接、初始化数据库查询结果集的操作'Set CONN=server.createobject("ADODB.connection")if CONN.state<>1 then'判断现在数据库是否正在连接,才打开一次数据库,避免过多的数据库连接'CONN.open "DBQ="&server.MapPath("/my_asp/Database.mdb")&";password=root;DRIVER={Microsoft Access Driver (*.mdb)}"end ifSet RS=server.CreateObject("adodb.recordset")End SubPublic Function getbySQL(sql)'根据sql语句,对数据库有返回结果查询'RS.open sql,CONN,1,3if not (RS.bof or RS.eof) then'如果查询结果非空,就将所有查询结果压到数组里面'MyArray=RS.GetRowsgetbySQL=MyArray'返回这个记载查询结果的数组给前台'end ifEnd FunctionPublic Sub setbySQL(sql)'根据sql语句,对数据库进行无返回结果的操作'CONN.execute sqlEnd SubPrivate Sub Class_Terminate'类的析构函数,主要是关闭数据库连接'RS.closeset RS=nothingif CONN.state=1 then'判断现在数据库是否打开,是,才关闭'Con.closeset Con=nothing end ifEnd SubEnd Class%>
在这个数据库操作类,与其它网页编程语言的大同小异,思想还是将查询的结果用数组推给调用对象再作进一步加工,
唯一需要注意的地方是VBScript对类的操作,如果要对类成员赋值,前面一定要有Set,相当于this.XX=xx的意思,而使用这个类成员则无须如此,直接用这个变量即可。
在dbselect.asp再如此对这个类进行调用,由于db.asp的封装,直接从对数据库的操作,简化为对数组的操作:
<!-- #include file="db.asp" --><%Set db_control=New DB'初始化一个DB类的实例,有点遗憾的是,由于VBScirpt是没有类型可言的,因此这个实例不能命名成与类同名为DB'MyArray=db_control.getbySQL("select * from user_info")'查询结果都塞到MyArray这个数组里面了''遍历MyArray这个二维数组(表)'For row=0 To UBound(MyArray,2)'UBound(MyArray,2)返回这个数组的第二维的长度'For col=0 To UBound(MyArray,1)Response.Write MyArray(col,row)&"&#x3000;"'不知为何&emsp;这个全角空格在IE6显示有严重兼容性问题。&emsp;显示的不是空格,而是方框,可以用井叉三千&#x3000;来代替'NextResponse.Write "<br>"Next'无返回值、操作数据库的查询语句示例''db_control.setbySQL("insert into user_info(username,password) values('呵呵','嘿嘿')")'%>
(1)首先,因为网页编辑器的转义问题,这里将某些转义字符前面的&换成全角,以便显示。如果用到一个比较长的空格,必须使用&#x3000;这个空格,而不是在《【HTML】空格》(点击打开链接)介绍过的 不然在IE6的显示就是如下的效果:
而不是我们想要的:
(2)这里,一上来就将db.asp引用进来,也就相当于将里面的数据库操作大类直接复制、粘贴过来了,db.asp类似C语言头文件的角色。
(3)同样需要注意VBScript对类的实例化,Set xx=new xx,也是必须要用Set的,否则会报错。
(4)之后,直接用实例点过程(方法),直接用这个类里面的过程即可。
0 0
- 【ASP】利用数据库操作类优化数据库表的增删改查
- 数据库的增删改查操作
- 数据库的一些增删改查操作
- 数据库的简单操作----增删改查
- android利用SQLiteOpenHelper类实现对数据库的增删查改操作
- 数据库、表基本操作增删改查
- 数据库操作增删改查
- 数据库操作--增删改查
- 增删改查 操作数据库的类(dao)
- 利用系统api实现数据库的增删改查 →数据库的增删改查
- 数据库的创建,数据库的操作(增删改查)
- 数据库---简单的使用Java操作数据库增删改查
- 数据库的增删改查
- 数据库的增删改查
- 数据库的增删改查
- 数据库的增删改查
- 数据库的增删改查
- 数据库的增删改查
- codeforces 581d
- android学习之选择媒体库中的图片
- jfinal 学习笔记
- Android学习之Animation(三)
- 执行django-admin.py时,打开编辑器的解决办法
- 【ASP】利用数据库操作类优化数据库表的增删改查
- java入门学习(11)—接口定义(interface)及使用(implements)
- ORA-02080:database link is in use
- System.arraycopy
- onPrepareOptionsMenu 和onCreateOptionsMenu 的区别
- folder汇总字段的实现
- Spring4.2第一个小例子
- 从零开始搭建架构实施Android项目
- NFC技术的基础应用