在ASP中简化数据库操作的思路和实现

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
在ASP中要修改一个数据库时,我想大多数人的做法都是:用RecordSet得到要修改的数据,把Field的值写到各表单对象的value中,要保存了,就逐个从表单对象中读取值,再一一赋给Field。最简单的典型代码如下:

初始显示代码大致如下:
<%
dim sql
dim rs,cn

sql = " Select * From Table Where PrimaryKey=1 "

... '得到RecordSet

dim sValue(20)
sValue(1) = rs("col1")
sValue(2) = rs("col2")
.... ' 赋值
%>

<!-- 页面中的Html代码 -->
<input name="field1" type="text" value="<%=sValue(1)%>">
<input name="field2" type="text" value="<%=sValue(2)%>">
<input name="field3" type="text" value="<%=sValue(3)%>">
... <!-- 其它要表单对象-->

保存代码大致如下:
<%
dim sql
dim rs,cn

sql = " Select * From Table Where PrimaryKey=1 "

... '得到RecordSet

rs("col1") = Request["field1"]
rs("col2") = Request["field2"]
.... '其它赋值

rs.Update()
%>

我以前就是这么做的。但当我一次以一次碰到类似的任务时,我发现80%的代码都是类似的,并且这种做法有很多不方便的地方:
1.增加和修改只需用同一个流程,只需标明是增加或修改即可。这部分可以标准化。
2.显示代码和保存代码,在取数据时是一致的,我在做asp时,习惯于显示是一个页面,处理用另一个页面,这样做的思路简单,且有利于代码和界面的分离。但代码的维护就有点麻烦了,取数据的代码改变后,必须同步。
3.当在保存代码中判断输入有问题理,需要返回显示界面,并做提示,要保留用户原有的值也是个麻烦事。Asp.net在post-back结构下处理就相当的方便。
4.当表单对象是RadioButton,checkbox或List时,要选择相应的值。这个过程也是大致相同,且麻烦。
5.当表中的Field很多时,给表单赋值和从表单中取数就很长,一旦有改动也很糟糕。
6.应该还有很多不方便的地方。

当我采用asp.net时,我发现aps.net将aps的大多数的不足改进得相当好,代码的复用性极佳,整个应用的体系结构更为合理,在应用程序方面的确有质的飞跃。但时下依然有很多的程序需要用asp,且asp.net必竟十分庞大,于asp有较大的不同。为了在asp中简化数据库操作,并使应用程序体系列合理,我尝试做一些改进,其中参考了asp.net的思想,采用了单页面模式(post-back,极简单的).

想要解决的问题:
1. 在post-back时,表单对象保持上次用户输入的值,类似asp.net的EnableViewState时。可以处理RadioButton,CheckBox和DropDownList表单对象。
2. 可以得到触发post-back的对象名称,模拟asp.net的事件处理结构。当然不会自动实现,需要自己实现该结构。
3. 在表单命名规范下,自动由RecordSet填写表单对象,或将表单的值回填到RecordSet中。同样要支持RadioButton,CheckBox和DropDownList表单对象。

★表单命名规范:"col_" + 字段名称。如表Table中有字段col1则,相应的表单命名为col_col1

目前的样例放在以下地址:http://www.ccpithz.org/sample/,其中的增加和修改页面(edit.asp)用到了改进的思路。

完整的edit.asp页面代码如下:
**************************** Edit.asp Begin ************************************************************************
<!--#include file = "../include/inc.asp"-->
<!--#include file = "../include/AspFrame.asp"-->
<!--#include file = "../include/Datastore.asp"-->
<!--#include file = "BaseLib.asp"-->
<%
' 声明公用变量
dim cn,ds
dim sTitle,sInfo

Page_Load

Sub Page_Load()
' *************************************************************
' 得到信息
' *************************************************************
' 得到Id值
dim nId
nId = CLng(Request("SelectedId"))

dim sSql,sConn
dim cnt
sConn = GetCommonCnStr() '得到数据库连接串
sSql = " Select * From article Where id=" + CStr(nId)
'检索数据
set cn = Server.CreateObject("ADODB.Connection")
cn.Open(sConn)

set ds = new CDatastore
ds.Init cn,sSql

' 第一次访问该面,从数据库中取值填充表单,而在post-back进,将自动保持上次的表单值。
If Not IsPostBack() Then
BindData
End If

' 保存
If IsPostBackObject("save") Then
Save
End If
End Sub

Sub Save
' 默认值
ds.GetParam()
If ds.nMode = 1 Then
ds.m_rs("bj_sort") = 9999
End If

dim nRc
nRc = ds.Update()

sTitle = "修改档案"
sInfo = "数据已保存成功"
End Sub

Sub BindData
ds.SetParam()
If ds.nMode = 1 Then
sTitle = "创建档案"
ds.m_value.Add "rq",FormatDate(Now(),4)
Else
sTitle = "修改档案"
End If
End Sub

%>
<script language="JavaScript" src="../include/utility.js"></script>
<form method="post" name="Form1" id="Form1">
<font size="3">This is a sample.</font>
<table width="98%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="25" bgcolor="#eeeeee"><strong><font size="3" color="#FF6600"><%=sTitle%></font></strong>
| <a onclick="_PostBack('Form1','save','');" href="#">保存</a> <font color="#FF0000"><%=sInfo%></font></td>
</tr>
</table>
<table width="551" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="79" height="25">标题</td>
<td width="472" height="25"> <input name="col_bt" type="text" id="col_bt" value="<%=ds.m_value("bt")%>"></td>
</tr>
<tr>
<td height="25">日期</td>
<td height="25"> <input name="col_rq" type="text" id="col_rq" value="<%=ds.m_value("rq")%>"></td>
</tr>
<tr>
<td height="25">作者</td>
<td height="25"> <input name="col_zz" type="text" id="col_zz" value="<%=ds.m_value("zz")%>"></td>
</tr>
<tr>
<td height="25">允许回复</td>
<td height="25"><input type="radio" name="col_bj_AllowChild" value="1">
允许
<input type="radio" name="col_bj_AllowChild" value="0">
不允许
<% SelectRadioButtonItem "col_bj_AllowChild",ds.m_value("bj_AllowChild")%></td>
</tr>
<tr>
<td valign="top">内容</td>
<td> <textarea name="col_nr" cols="60" rows="20" id="col_nr"><%=ds.m_value("nr")%></textarea></td>
</tr>
</table>
<% BuildFrameHidden %>
</form>
<% FillPostBackForm %>
***********************************Edit.asp End ************************************************************************

目前仍在研究中,各位在处理似的问题时,都用的什么办法,有些什么想法,欢迎讨论。

asp.net学习之路之登录+access数据库操作 先来一组图,看看界面到是怎么样的吧 登录界面,做的相当搓,没做美工。笔者在之前的博文中也有说过,希望不要吐槽哈 管理员界面: 还有个非管理员的界面。 与管理员界面差不多,管理员是可以直接 编辑信息的,而非管理员就不行了。这里就不再赘述了。 再来聊聊 这个登录。 笔者使用的是access数据库。相信装了微软的 office 都有这个数据库的,除非你在安装of 阅读详情

相关推荐

书店图书销售管理系统ASP实现

ASP(Active Server Pages)是一项早期流行于 Web 开发领域的服务器端脚本环境。它使得开发者能够利用诸如 VBScript JavaScript 等脚本语言创建动态、交互式的 Web 应用。本章首先对 ASP 技术及其在 Web 开发中的应用进行概述,为接下来深入探讨 ASP 在动态网页技术中的运用奠定基础。

weixin_42593130的博客 330

ASP批量更新数据代码

<br />ASP批量更新数据代码<br /><br />%>   <br />两个文件 ..cn.asp 连接数据库用的 ..cn3.asp 执行文件 .<br />cn.asp 源代码 <br /><%<br />dim conn<br />dim dbpath<br />bb="base/qqw.asp"<br />   set conn=server.createobject "adodb.connection" <br />DBPath = Server.MapPath bb <br />conn

r_jolpkmnvverset的专栏 1188

ASP常见问题及解决方案1000例

本文还有配套的精品资源,点击获取 简介:ASP,即Active Server Pages,是微软开发的服务器端脚本语言,用于创建动态网页并与服务器进行交互。开发者在使用ASP时不可避免会遇到各种问题,本资源提供了1000多个常见问题及其解答,涵盖了变量、数据类型、VBScript语法、请求与响应对象、服务器端组件、数据库操作、错误处理、Session与Application...

weixin_30995917的博客 1382

Asp.net防止刷新重提交数据库操作

Asp.net防止刷新重提交数据库操作    最近在写个B/S的应用系统,采用Asp.net(2..0)+Windows验证+Ajax+Sql2005+VS2008+Windows2003的组合。    由于我们对的是公司内部客户(两个财务部的小姑娘),做了几个输入界面就叫她们测试。    发现新增数据或修改数据后刷新浏览器系统会重复前一次(最近一次的数据库操作)。    这里将解决这个问题的

farawayplace613的专栏 2052

ASP Framework (一) 简介

  前阵子刚完成一个B/S架构的学校办公系统,体会就是表太多,文件太多,而每个文件中类似的操作(代码)也太多了,例如学生信息教师信息操作,student.asp,teacher.asp,这两个文件要实现的功能有,添加、删除、修改、显示教师学生信息,两个文件中就有很多相同的代码:比如:  显示信息,do while not rs.eof,rs.movenxt  添加记录,name = reque

拯救ASP 1070

ASP.NET学习心得总结

总之,ASP.NET是一种非常实用的Web开发框架,它不仅提升了我的编程技能,还拓宽了我的视野,运用技巧学习思路的掌握对于我们提高Web开发能力质量至关重要。ASP.NET是一种常用的Web开发框架,它基于.NET平台,提供了一系列的工具技术,它是一种强大的编程语言,它富有灵活性,并提供了广泛的应用场景。同时,在实践的过程中,要不断总结经验教训,不断优化改进自己的开发思路方法。2.学习ASP.NET需要注重.NET平台的基础知识的学习,同时也要注重ASP.NET的基本概念原理的学习。

qq_65380463的博客 2524

ASP数据库

ASP数据库类一、前言  提到ASP操作数据库,大多数人会想到:共用的连接字串ConStr、Conn.Open ConStr建立数据库连接、Conn.Execute SqlCmd方式执行命令、RecordSet.Open Sql,Conn,1,1取得记录集,的确这种方法被99%的人或公司采用。对于操作数据库过程中产生的错误,恐怕99%的人不会进行处理,要么在程序的开头加入on error r

编程手札 9946

ASP中轻松实现变量名-变换

用过PHP的朋友都知道,PHP中变量的使用灵活方便,特别是能在字符串中方便实现变量名-变换,使得整个PHP代码更显简洁优美。比如一条更新数据库的SQL语句只需写成:"update users set password='$password', group=$group, name='$username' where account='$account'",其中的$password、$group、

1136

ASP.Net 实现Excel数据到GridView,再到SQL Server的转换

需求分析:想要实现B/S模式下在线编辑Excel表数据并提交保存在数据库中。然而经过调研,ASP.Net对于B/S模式下,并不能实现调用本地程序实现编辑Excel的功能。想实现类似的功能,有pageoffice等第三方付费插件,因此结合相关部门人员对需求进行了二次评估,转变思路,不再进行在线编辑Excel的功能模块,从而转变成导入导出Excel文件,用户还是对Excel文件进行操作,最终数据仍然是到数据库中统计汇总。 主要实现功能及步骤: 1)实现Excel数据导入到GridView中 2)实现Gri

Joye-joy的博客 512

asp中的数据缓存

用md5后的sql语句做key,在application ,硬盘中存储得到的数据

puber的专栏 1542

ASP.NET数据库操作层的设计

  在做开发的时候,经常需要访问数据库的,每次重复的编写Connection,Command等语句实在是件令人厌烦的事情,大家应该都有过这样的经历吧。现在我把自己设计的数据库操作层与大家分享一下,互相交流学习。我个人比较喜欢把自己的设计方法,设计思想写出来,互相共享交流,取长补短,才能更加的完善自己的设计。   在.NET中,数据库分为三种类型。真的是分为三种数据库类型吗?我是猜的,根据.NE...

weixin_34245169的博客 84

ASP.NET完整购物网站设计与开发

本文还有配套的精品资源,点击获取 简介:ASP.NET是微软开发的Web应用程序框架,用于构建动态网站Web服务。本购物网站项目涵盖ASP.NET开发的基本流程,包括前端UI设计、后端业务逻辑实现数据库操作以及安全性考虑。通过这个项目,开发者可以深入理解ASP.NET在构建实际Web应用中的应用,同时也能锻炼到数据库设计、用户体验优化、系统安全等多个方面的技能。 ...

weixin_34162851的博客 1385

ASP.NET MVC音乐商城系统开发实战源码

set;set;set;在EF的Code First模式下,开发者通过编写C#类来定义数据模型,EF会根据这些类自动生成数据库结构。set;set;set;// 外键关联set;set;本章系统讲解了Razor视图引擎的语法基础、音乐商城前端页面的构建方式、布局与模板复用机制,以及动态数据绑定与交互优化策略。通过Razor的强大功能,我们能够构建出结构清晰、可维护性强、交互流畅的Web界面。

weixin_42298164的博客 894

ASP.NET MVC分页的实现

ASP.NET中,GridView控件本身就带有分页的功能,只要把当前页面的索引赋给GridView的PageIndex就可以实现了分页,至于数据怎么分页,全都由GridView封装起来了。 在ASP.NET MVC中分页的实现就只能靠自己来设计了。首先来说一下分页的原理。现在有一个张news表,中间有很多信息,我们假设一页显示5条记录,这样,页面数量=总记录数/5;这里,如果出现小数,得进...

weixin_30819085的博客 599

ASP.NET MVC使用NPOI实现Excel导入完整教程

ASP.NET MVC 是微软推出的基于 .NET 平台的Web开发框架,采用架构模式,实现了职责分离,提高了代码的可维护性与可测试性。其核心特点包括:路由机制:通过URL路由实现更清晰的地址映射;强类型视图与模型绑定:简化数据传递与处理流程;支持多种视图引擎:如 Razor、ASPX 等;便于测试:支持单元测试与依赖注入,有利于构建高质量系统。本章为后续章节奠定理论基础,帮助理解在MVC架构中实现Excel导入功能的技术逻辑与设计思路

weixin_33363025的博客 751

视频教程-ASP入门知识点讲解-.NET

ASP入门知识点讲解 04年进入计算机行业。拥有6年netphp项目开发经...

weixin_31097563的博客 203

asp毕业设计下载(全套源码+配套论文)——基于asp+access的客户管理信息系统设计与实现

本文介绍了客户管理系统的实现方法。目的在于让大家共享学习运用这一语言的体会收获。本系统是Internet/Intranet环境下面向电子商务的客户管理,通过企业管理技术、电子商务信息技术的高度集成,讨论了客户管理系统的系统构架、系统的工作方式数据库设计意义。通过数据库、数据源、ASP代码,进行对客户管理系统的实现,并对客户管理系统的发展进行展望。帮助企业在全球经济一体化的激烈市场竞争环境中,建立以市场、客户为中心的管理体系,有效管理企业与客户之间的关系,提高客户忠诚度,实现客户价的最大化。

m0_66238867的博客 1179

基于ASP的站内多搜索

运行环境:IIS脚本语言:VBScript数据库:Access/SQL Server数据库语言:SQL 1.概要:不论是在论坛,还是新闻系统,或是下载系统等动态网站中,大家经常会看到搜索功能:搜索帖子,搜索用户,搜索软件(总之搜索关键字)等,本文则是介绍如何建立一个高效实用的,基于ASP的站内多搜索。本文面对的是“多条件模糊匹配搜索”,理解了多条件的,单一条件搜索也不过小菜一碟了。一般来讲,有两

tcomsj的专栏 603

ASP.NET Core 概述

依赖注入的核心就是 “依赖由框架提供,而非自己创建降低类之间的耦合,便于修改扩展;便于单元测试(可替换为模拟对象);统一管理对象的创建生命周期,减少资源浪费。在ASP.NETCore 中,几乎所有核心功能(如数据库上下文、身份验证、日志等)都是通过依赖注入机制工作的,是必须掌握的基础概念。在ASP.NETCore 中,中间件(Middleware)是处理 HTTP 请求响应的组件,而请求处理管道就是由这些中间件按顺序组成的 “链条”。处理请求。

wlq_567的博客 1412
上一篇: Asp.Net多页模式的烦恼。
下一篇: 很久没有来csdn了,感觉孤单了,再来热闹热闹。
JackWu
博客等级 码龄25年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值