小愚学ASP 第四篇:ASP的数据库编程-SQL语法实战
蚂蚁电商3.0 2003-11-8 16:31:15www.BHAsp.com [ 关键字 ] 电脑报,学习,新闻
《小愚学ASP》 第四篇:ASP的数据库编程-SQL语法实战(相对完善的新闻发布系统) ----讲课:关大哥 听课:小愚 小愚:上次写的新闻发布系统果然有用,我把它改了一下,改成了网络上人气很旺的“首页更新”,现在有人要请我当ASP频道的道长哎…… 关大哥:(不是吧,这样也行?!)咳咳,上次那个“新闻系统”,其实不具备现实可用性,因为管理功能方面还有所欠缺,第一,没有修改数据的功能,打错内容了没法编辑;第二,没有删除数据的功能,新闻多了不方便管理;第三,没有管理入口的限制,谁都可以发布新闻,有人发几条非法信息怎么办?所以,这一节课我们来讨论如何增加上述的几个功能。 小愚:管理很完善啊,修改、删除数据可以先把数据库下载了,再打开Microsoft Access来……(台下晕倒一片) 关大哥:这时提到的管理是指“在线管理”,不需要下载数据库,而是直接在网上进行。要实现在线管理数据库,就要先加强一下数据库语言:Structured Query Language(SQL,结构化查询语言),下边介绍四条最常用的SQL语句。 1.Select语句。主要用于对数据库进行检索,查找出符合要求的记录。 示例:select new_id,new_time,new_note from new 上面的语句意思是要在表new中进行检索,前面的 new_id,new_time,new_note是表new中的字段,当然,我们可以用“*”号来表示“所有字段”,不过使用“*”号的方便是以牺牲系统性能为代价的,我们不提倡这样做。 Select语句可以带有条件子句:Where子句 示例:select new_id,new_time,new_note from new Where new_time=date() 表示要检索表new中时间字段的数据是今天的数据,也就是说,只查询今天的新闻。 2.Insert语句。用于向数据库添加一条新记录。语法如下: Insert INTO 表名 ( 字段名1,字段2... ) VALUES ( 字段1的值,字段2的值... ) 这里要特别注意“字段的值”要跟“字段名”一一对应。 示例:Insert INTO new ( new_time,new_note ) VALUES ( '01-12-09','今天完成比较完善的新闻系统!' ) 注意字段的值如果是字符串,要用单引号隔开。如'01-12-09'。 3.Update语句。用于更新数据库中的一条或者多条记录。语法如下: Update 表名 SET 字段名1=字段1的值,字段名2=字段2的值... Where 表达式 示例:Update new SET new_note='电脑报又要改版了?' Where new_id=3 Update语句中Where子句是不可缺少了,符合表达式的记录才会被更新,象上例,只有当new_id字段中的值是“3”的那一行的数据才会更新。 4.Delete语句。用于删除数据库中的一条或者多条记录。语法如下: Delete FROM 表名 Where 表达式 Delete语句跟Update语句不同,Delete语句中的Where子句是可选的,如果没有Where子句,则指定的表的全部记录将被删除。 Delete FROM new Where new_id=3 上面的语句将删除new表中new_id字段为3的全部记录。 小愚:听起来好象不难,不过,还是举一些实际的例子吧,比如,刚才说的那些功能…… 关大哥:也好,我们还是继续上一课的例子吧,把上一课中的“小小新闻发布系统”完善起来。 显示新闻的页面还是一样,大家可以参照上一课的3-1.asp(修正后的)。这一次我们只讨论管理功能的实现。首先我们来设计一个管理登录页面,只有正常登录后才能进行新闻的发布、修改、删除等操作。 例程 4-1.htm(因篇幅关系,我们只介绍主要部分,其它的html标记大家可自行补充完整……咦,哪里飞来一块桔子皮,咦,又来一块香蕉皮……) <form method="post" action="4-2.asp"> <table border="1" width="300"> <tr><td width="50%">管理帐号:</td> <td width="50%"><input name="username" size="20"></td> </tr> <tr><td width="50%">管理密码:</td> <td width="50%"><input type="password" name="password" size="20"></td> </tr> <tr><td width="100%" colspan="2" align="center"> <input type="submit" name="Submit" value="确定"> <input type="reset" name="Submit2" value="重写"> </td></tr></table> </form> 本文件关键是表单部分,表单向文件4-2.asp提交两个内容,一个是账号(username),另一个是密码(password)。下面是处理表单的文件: 例程 4-2.asp <% dim username,password,adname,adpw adminname="admin" '这里设定管理员的帐号 adminpw="admin" '这里设定管理员的密码 username=request.form("username") password=Request.Form("password") if username=adminname and password=adminpw then response.cookies("admin")=true response.redirect "4-3.asp" else response.redirect "4-1.htm" end if %> 这里仍然用IF函数对管理员身份进行确认,当管理帐号及管理密码都正确时,建立一个Cookier,名为admin,并同时将admin的值设定为True(真),然后将页面重定向到管理页面4-3.asp,这里用了Response对象的Redirect方法。如果管理帐号或者管理密码不正确时,将页面重定向回到登录页面4-1.htm。 小愚:哎,等等,如果有人知道4-3.asp是管理页面,直接在浏览器地址栏打4-3.asp怎么办? 关大哥:呵呵,这个俺早就料到了,我们可以在每个管理页面最前面加上一段代码,用于检测Cookier中的值,如果Cookier中admin的值等于True,那么程序才会继续运行,如果不是,则重定向回到登录页4-1.htm。 例程 4-4.inc <% if request.cookies("admin")="" then response.redirect "4-1.htm" end if %> 小愚:怎么后缀名变成了inc了? 关大哥:这是一个包含文件,本身不能被执行,只能插入到其它文件中执行。 小愚:那包含文件有什么作用呢? 关大哥:一些经常要用到的代码段,几乎在每一个页面都有的代码,我们就可以用一个包含文件来使用它,就不用每一个页面都加上这些代码了,比如数据库的连接代码。 例程 4-5.inc <% dim conn dim rs set conn=Server.CreateObject("ADODB.Connection") conn.open "Provider=Microsoft.JET.OLEDB.4.0;Data Source= "&server.MapPath ("bha.mdb") %> 以后只要在需要这些代码的页面中使用如下语法调用它就行了。 <!--#include file=4-5.inc--> 例程 4-3.asp(管理页面) <!--#include file=4-4.inc--> <!--#include file=4-5.inc--> <a href="4-7.asp?">添加新闻</a> <%Set rs= Server.CreateObject("ADODB.Recordset") rs.open "select new_id,new_time,new_note from new",conn,1,1 do while not rs.eof%> <%=rs("new_note")%><br><small>本新闻发布时间是<font color=red> <%=rs("new_time")%></font> <a href="4-6.asp?key=edit&id=<%=rs("new_id")%>">修改</a> <a href="4-6.asp?key=del&id=<%=rs("new_id")%>">删除</a></small><hr> <%rs.movenext loop%> 注意文件最前面的包含文件,第一个是管理身份确认的,确认通过才继续执行,第二个是数据库连接文件。这里开始用到了ASP的参数调用,方法是在ASP文件后用“?”号连接要传递的参数。这里传递的参数是new_id字段的值以及预先设定的key的值。 好好利用ASP的多参数传递,能给我们省不少麻烦呢,具体的运用可以这样来: IF key="参数1" then 相应执行代码段 Else IF key="参数2" then 相应执行代码段 Else IF key="参数3" then 相应执行代码段 End If End If End If 篇幅关系,这里只给出一段删除新闻的代码,其它内容,相信能看到这里的网友应该不在话下了(小愚:人之初,性本懒……)。 小愚:有好几层IF函数哎,原来IF函数还可以这样用啊, 关大哥:是啊,IF函数可以多层套用,一方面使代码简洁,另一方面使程序易读。 部分例程 4-6.asp <% '此处应先判断用户身份和加上数据库的连接代码 if key="del" then '开始对参数key进行判断 sql="Delete from new where new_id="&Request("id") '这是删除新闻的语句 rs.open sql,conn,1,3 response.redirect "4-3.asp" '重定向回到管理页面 end if%> 到这里为止,这个新闻发布系统就比较完整了,可以完成新闻的添加、修改、删除等操作,对付一般的网站应该就…… 小愚:时间不早啦,今天是不是就这样啦(ASP频道的网友等我去指点迷津呢)…… 附:为方便网友学习ASP语言,我们已经把完整代码打包,有需要的朋友可以到大头蚂蚁工作室的主页下载 Http://bha.6to23.com/或Http://asp.6to23.com/bha/index.asp
oooooooooo家园提示:人自为谱,家自为说,正误自辨,取舍自酌。引用注明作者和出处。
|
来源:罗氏家园
阅读:4047 次
日期:2004/5/23
|
【 查看评论 】 【 收藏 】 【 打印 】 【 关闭 】
【字体:大 中 小 】
|
|