ASP扫盲学习班第六课 --- 添加新保存的数据

上一节课中我们回顾了一下过去所讲的内容,同时着重说了一下IIS调试台的使用,如果还有不明白的朋友请看一下上节课的动画,以确保调试台可以正常工作,因为今后的学习全部需要在调试台下进行,从这节课开始我们讲述数据存储。 

 

所谓的数据存储就是将前台中用户所填写的数据保存到数据库中,存储到数据库的目的是为了我们今后对数据进行查询检索之类的操作,因此数据的存储我们可以这样来理解,我们用asp写程序实际上就是围绕数据来做,以数据的存储修改查询删除等为核心,针对此核心我们用一种数据库能够识别的脚本来操作它,从而最终达到我们的目的。闲话少说,这节课我们需要讲述的内容非常多,我们先来看代码。 

 

让我们打开以前创建的doing.asp然后输入以下代码:

该篇文章附带的 HTML 代码片段如下:

<%
set conn=server.createobject("ADODB.CONNECTION")
connstr="DBQ="+server.mappath("db.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr 

 

'获取表单数据
Title = Request.Form("Title")
Message = Request.Form("Message") 

 

Set Rs = Server.CreateObject("Adodb.Recordset")
Rs.Open "Select * From Guestbook Where 1=2",Conn,1,3
Rs.Addnew
Rs("title")=title
Rs("message")=message
Rs.update
Rs.Close
Set Rs = Nothing 

 

Response.Write ("数据已经被成功的写入数据库<br>")
Response.Write ("<a href='index.asp'>点击返回</a>")
Set conn = Nothing
%>


输入之后保存,然后打开浏览器,输入http://127.0.0.1,留一次言,看一些能否提示“数据已经被成功的写入数据库”,如果这样提示了,那说明你的程序已经没有问题了,再打开数据库,然后看一下我们设计的数据表中是否已经有了刚才您所留的言,如果有,那么一切正常。 

 

接下来我们讲述代码,
connstr="DBQ="+server.mappath("db.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
这一段我们暂时不详细讲解,大家只需要知道db.mdb就是我们的数据库名,并且这一段代码是用来与数据库建立连接的就行了,以后我会做详细的讲解
我举一个例子来说明一下,就如同我们相隔很远需要打电话通信,那么前提是我们有一部电话机和一根互通的电话线.那么这一段我们可以理解为asp和数据库通信的一个中介。 

 

'获取表单数据
Title = Request.Form("Title")
Message = Request.Form("Message")
这一段我们已经在第四课做了详细的讲解,如果不理解,那么请你去看看第四课的内容。 

 

Set Rs = Server.CreateObject("Adodb.Recordset")
这一句是用来创建对象,大家一定要记住,在asp中创建对象的方法就是用set
语法是
set 对象名称= Server.CreateObject("对象的名称")
Server:含义是服务器
Create:含义是建立,创建
Object:含义是对象,目标
Server.CreateObject合起来理解就是服务器创建对象
在刚才这个简短的代码中我们已经看到创建了两个对象,他们分别是:
Set Rs = Server.CreateObject("Adodb.Recordset")
set conn=server.createobject("ADODB.CONNECTION")
大家看一下创建的这两个对象名称不同,对象名称不同,其余的都相同,或许你会问大小写也不同,asp忽略大小写
注意:如果要操作数据库,那么就必须要创建对象,对象用完之后记得要使用Set 对象名称 = Nothing清理
这里我举例来说明以下何为对象
“我的电脑运行速度很快”
在这一句话中“我的电脑”我们把它理解为对象,而“运行速度很快”则是对象的表现形式,如果这句话中我去掉“我的电脑”这个对象,而单纯说“运行速度很快”,那么大家肯定会摸不着头脑,不知道什么运行速度很快。 

 

Rs.Open "Select * From Guestbook Where 1=2",Conn,1,3
我们看一下这句,在这句中Rs就是对象(因为我们刚才用Set Rs = Server.CreateObject("Adodb.Recordset")刚刚把它创建了),好现在对象有了,那么我们再看一下这个对象要表达什么
open:含义是打开
现在我们已经知道对象的基本意图了,他的意图是“对象要打开”,而他要打开什么呢?
select:含义是选择
*:他是一个通配符号,意思是所有的
from:含义是从
Guestbook:这是我们数据库中所创建的表的名字,含义是留言本
Where:含义是哪儿?但是在计算机英语中的asp编程中我们需要把它理解为条件
Conn是我们创建的对象
,1,3这里我们暂时不详细解说,大家仅仅需要记住一点,那就是如果我们需要对数据库修改添加或者删除的时候需要用,1,3而如果要对数据不作变更而是仅仅查询,那么我们需要用,1,1 

 

Rs.Open "Select * From Guestbook Where 1=2",Conn,1,3
好,那么我们连贯起来理解这一句的含义“对象要打开(从数据库中的Guestbook表中选取数据,条件必须要满足1=2的数据),并且允许对数据作改动”
那么让我们想一下,1=2,这可能吗?根本不可能,既然条件是不存在的,那么Select * From Guestbook(从数据库中选择所有数据,必须要满足一等于二这个条件的记录),没有一行能够满足的了这样就得不到任何记录,
既然得不到任何数据,那么我们就往里插入,插入的语法是
对象.Addnew
Addnew:含义是新建,当碰到这一句我们就要知道现在数据库准备要往里新建数据,但是还没有真正的写进去,这里我们要考虑一点,那就是新建的时候如何让数据知道我们前台中用户的留言标题(title)能够正确地写到数据库中存储留言标题的title列中呢?
因此我们就需要描述一下,让数据库清楚这件事情
Rs("title")=title
我们看有一下这个Rs("title"),rs我们都知道了,他是对象Rs("title")则表示对象里的title,那么对象是指我们的数据库,这一句的含义就是数据库中的title列,而后边的=title,这是付值,把等号右边得值赋给等号左边,等号的右边是一个title,这个title是一个变量,因为他没有加单引号或者双引号,所以它就是变量,而如果这一句这样来写
Rs("title")="title"
那么其意义就不同了,这一句的含义就变成了让数据库中的title列的值等于title这个字符串,这样一来不管前台用户如何提交留言的标题内容,最终被写入数据库的留言标题将永远都是title这几个字符
现在我们重新看一下Rs("title")=title,这里是让数据库的title列的值等于变量title的值,而title的值等于Request.Form("Title"),意思是从前台获取form表单中表单项目名称是title的值(这一点,第四节课我们都讲过了,如果不明白,那么请回头看一下)
Rs("message")=message
这一句和上边一样,不再赘述 

 

Rs.update刚才我已经说过了,当我们碰到rs.addnew这一句我们就要知道现在数据库准备要往里新建数据,而现在大家要知道,当我们碰到Rs.update则是程序正在执行往数据库中写数据这一过程
Rs.Addnew 做好写的准备
Rs("title")=title 告诉数据库怎么写
Rs("message")=message 告诉数据库怎么写
Rs.update 往里写 

 

Rs.Close 关闭对象,大家记得如果对象不再用了,那么你就要及时地关闭它
Set Rs = Nothing 清除对象,清除对象和用set建立对象是对应的,
由此可知,对象使用要首先创建,然后才能用,用完之后要关闭,关闭之后要清理,这样的程序才是效率最高的程序。
如果你不关闭,不清理那么我们建立对象时所使用的服务器内容将会长期不能够被清理,除非服务器重新开机,不能被清理就会导致我们所写的程序运行效率低,速度慢。 

 

Response.Write ("数据已经被成功的写入数据库<br>")作用是把这句话“数据已经被成功的写入数据库”输出到显示器,同时执行换行操作
Response.Write ("<a href='index.asp'>点击返回</a>")作用同上
Set conn = Nothing 清理对象 

 

好了,这节课总算讲完了,我的讲述罗罗嗦嗦一大套,大家不要死记硬背,关键是理解,程序员不需要死记硬背,如果你想通过死记硬背的方式学好程序,那么我建议你现在就放弃,不要耽误时间。

posted @ 2006-12-19 21:11  已經停更  阅读(150)  评论(0编辑  收藏  举报