当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP编程入门进阶(二十):ADO组件之插入数据记录

ASP
asp实现取得数组中的最大值的代码
asp 将日期格式化为需要的格式
asp 下产生任意位数随机密码的代码
asp下返回以千分位显示数字格式化的数值
asp重定向页面的方法总结
asp下去除数组中重复的项的方法
asp下实现 重新排序数字数组的代码
asp 验证输入网址是否有效并可以访问 与正则验证输入网址
asp验证Ip格式的函数
asp实现生成由数字,大写字母,小写字母指定位数的随机数
asp 格式化sql中的like字符串
asp 实现显示所有的服务器变量值的函数
asp 取得用户真实IP,对代理地址仍然有效的函数
asp 通用数据库连接过程函数
asp 字符串截取函数
asp下实现格式化文件大小以MB显示的函数
asp 下用正则表达式检测邮箱格式的函数
asp 实现检测字符串是否为纯字母和数字组合的函数
asp代码实现检测组件是否安装的函数
asp通过JMAIL实现通用发送函数

ASP编程入门进阶(二十):ADO组件之插入数据记录


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 81 ::
收藏到网摘: n/a

简单的显示记录已经掌握,现在需要的就是通过ASP将信息内容插入到数据库中。
一、拥有数据库cnbruce.mdb
本数据库的作用就是用来被插入数据的,可以直接采用上节中已经建立的cnbruce.mdb文件,当然连接打开数据库的文件conn.asp也就顺利引用了。
二、建立输入插入信息的页面平台addit.html
本页的主要作用是:显示一些文本输入框以用来提供输入信息内容提交数据库。
1,addit.html

[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]
本页其实很简单,就是通过submit按钮将表单的信息内容提交到addit.asp页面去处理。
三、建立处理接受数据并插入数据库表的页面程序addit.asp
2,addit.asp

<!--#include file="conn.asp" -->
<%
whattitle=request.form("title")
whoauthor=request.form("author")
whatcontent=request.form("content")
%>
<%
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from cnarticle"
rs.Open sql,conn,3,2
%>
<%
rs.addnew
rs("cn_title")=whattitle
rs("cn_author")=whoauthor
rs("cn_content")=whatcontent
rs.update
%>
文章添加成功,<a href="showit.asp">浏览</a>
<%
rs.close
Set rs = Nothing
conn.close
set conn=Nothing
%>

恩,接着就是来具体分析一下。
1,<!--#include file="conn.asp" --> 不用说,凡是要和数据库有联系的都要运用到该连接文件。
2,whattitle=request.form("title")之类 就是将上页表单中接受过来的值赋到一变量上,方便下面程序的调用。
3,rs.Open sql,conn,3,2 注意参数和显示数据库时采用的参数的不同。
4,rs.addnew 很简单也很显眼的一个声明:新建一个数据库记录集行。
5,rs("cn_title")=whattitle之类 即将接受的表单值对应到相关字段中。
6,rs.update 只是值和数据库字段的对应,完了后还要将对应的值上传提交到数据库表中去。
7,插入后可以跳转到showit.asp查看 需要说明,以后的ASP例题可能都是建立在前几节内容的基础之上完成的。
8,释放资源 是规矩,不要忘记。
那么,现在。插入并显示数据库记录,对你来说完全是小菜一碟了。大体框架搭建完毕,下面就是具体的细化了。
其中包括:客户端的表单检测,防止用户信息输入的遗漏;当然最好还是要加上服务器端的表单检测,由于客户端的某些原因(比如自行设计提交非检测的页面)基于安全考虑,一切还是依服务器端所接受信息为准。那下面就继续细化应用下了。
1,客户端检测 其实就是通过简单的脚本检测,这在初学ASP提到脚本的时候说到,下面将再次重复。
加强的addit.html

[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]
2,服务器端检测 有人也许会问,既然有了客户端的检测,那还有多个服务器端的检测呢?原因很简单,比如仿照HTML表单提交页,自行设计一张去除了表单检测的页面。当点击提交,并且没有任何信息时,到达服务器端如没有任何防御则肯定会造成数据插入的失败。
加强的addit.asp

<!--#include file="conn.asp" -->
<%
whattitle=trim(request.form("title"))
whoauthor=trim(request.form("author"))
whatcontent=trim(request.form("content"))
%>
<%if whattitle="" then%>
<script language=vbs>
alert("请输入文章标题")
history.go(-1)
</script>
<%end if%>
<%if whatcontent="" then%>
<script language=vbs>
alert("请输入文章标题")
history.go(-1)
</script>
<%end if%>
<%
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from cnarticle"
rs.Open sql,conn,3,2
%>
<%
rs.addnew
rs("cn_title")=whattitle
rs("cn_author")=whoauthor
rs("cn_content")=whatcontent
rs.update
%>
文章添加成功,<a href="showit.asp">浏览</a>
<%
rs.close
Set rs = Nothing
conn.close
set conn=Nothing
%>

可以看出,就是添加了如下类似的判断。

<%if whattitle="" then%>
<script language=vbs>
alert("请输入文章标题")
history.go(-1)
</script>
<%end if%>

很简单,如果接受过来的信息为空,则弹出警告框,并且确认后返回到上页即addit.html了。当然cn_author没有设置检测,因为当初设计该字段的接受值是允许为空的。
OK,总结一下,插入记录主要就是

rs.addnew
rs("cn_title")=whattitle
...
rs.update

很简单,先声明addnew,然后一一对应,再提交插入数据库。
这是一种插入数据库的方法,下面就来接触了解一下另外一种。
需要注意,结构化的查询语言也就是SQL语句能够完成一些比较苛刻的数据库操作。当然,对于诸如提取、插入信息之流就更不在话下了。所以下面采用的插入记录的方法就是直接采用SQL语法完成。
修改了的addit.asp

<!--#include file="conn.asp" -->
<%
whattitle=request.form("title")
whoauthor=request.form("author")
whatcontent=request.form("content")
%>
<%
sql = "insert into cnarticle(cn_title,cn_author,cn_content) values(' "&whattitle&" ',' "&whoauthor&" ',' "&whatcontent&" ')"
conn.Execute(sql)
%>
文章添加成功,<a href="showit.asp">浏览</a>
<%
conn.close
set conn=Nothing
%>

本程序中,你会发现只要一行的SQL语句,不需要建立Rescord记录集行,不需要声明addnew,不要执行update。直接通过conn.Execute(sql)来完成。
当然应用此种方法,若必填字段接受值为空时,同样能够插入记录。这和采用第一种会报

Microsoft JET Database Engine 错误 '80040e21'
字段 'xxx.xxx' 不能是零长度的字符串。

具有很大的容错性。
是程序的可读性还是方法的简便高效率就任君选择了。