|
今天就到这儿吧,建议大家多动动手,自己试验一下看能不能仅利用一个ASP文件,就把“删除”,“更新”和“添加”功能都实现了。其实它们的原理跟“显示”是相通的。等明天我写完下一节,大家再看看自己写的代码和我的有什么不同,也许会发现更多问题:)大家跟我一起加油吧!
LV与ASP综合运用之一:demo03.rar
LV与ASP综合运用(二)
接上节,现在开始第三步:“删除”功能: 在《ASP操作数据库入门》一节的最后,我给出了删除一条记录的SQL语句,不知道大家当时自己动手试验了没。如果没的话也没有关系,现在就跟我一起在FLASH中实现这个功能吧。而且我将演示如何利用“zonghe.asp”一个后台文件实现所有功能。
在看代码之前,请大家先思考这样一个问题,如果要删除一条记录的话,你依据什么删除呢?依据“yuwen”成绩可以吗?打开我们的数据库表可以看到“毛宁”,“巩丽”和“李小龙”都是100分,如果我们删除语文成绩为100的记录,就会同时把这三个人的记录都删除了。为了避免发生这种情况,我们一般都依据数据类型为“自动编号”的字段,因为自动编号字段是绝对不会重复的,比如这里的“xuhao”。
按照我的开发习惯,我们还是先来写后台,请在“zonghe.asp”写如下代码:
<%@LANGUAGE="JAVASCRIPT"%>
<% //建立数据库链接对象 lianjie = Server.CreateObject("ADODB.Connection"); //打开数据库 lianjie.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("shujuku.mdb")); //创建“记录集” rs = Server.CreateObject("ADODB.Recordset"); //设置一个选项变量,根据这个选项的值,来决定执行对应功能的代码,这个变量来自FLASH var xuanxiang=Request("xuanxiang_flash"); %>
<% //——————根据变量“xuanxiang”决定调用对应的函数 if(xuanxiang=="显示"){ //查询显示记录演示 xianshi(); }else if(xuanxiang=="删除"){ //删除记录演示 shanchu(); } %>
<% //——————定义“显示”的功能函数 function xianshi(){ //查询的SQL语句 sql="select * from shujubiao order by xuhao desc"; //执行数据库查询 rs.Open(sql, lianjie, 3); //从FLASH接收当前页码 var dangqianye=Request("dangqianye_flash"); //从FLASH接收每页显示的记录条数 var meiyejilu=Request("meiyejilu_flash"); //声明一个变量用来存储要输出的内容,初始为空 var shuchuneirong=""; //设置每页显示的记录条数 rs.PageSize=meiyejilu; //设置当前显示的页码 rs.AbsolutePage=dangqianye; //获取记录总条数 var zongtiaoshu=rs.RecordCount; //获取总页数 var zongyeshu=rs.PageCount; //利用循环显示一页的所有内容,具体的页码在第二段代码的“rs.AbsolutePage”中指定了 for (i=0;i<meiyejilu;i++){ if(!rs.EOF){ //获取字段内容 var xuhao=rs("xuhao"); var xingming=rs("xingming"); var yuwen=rs("yuwen"); var shuxue=rs("shuxue"); //将要显示的内容记录在“shuchuneirong”中 shuchuneirong =shuchuneirong+"<br>序号:"+ xuhao +" | 姓名:"+xingming+" | 语文:"+yuwen+" | 数学:"+shuxue; rs.MoveNext(); } } //将查询出来的内容输出成变量/值配对形式 Response.Write("&neirong_asp="+shuchuneirong); //输出总条数 Response.Write("&zongtiaoshu_asp="+zongtiaoshu); //输出总页数 Response.Write("&zongyeshu_asp="+zongyeshu); } %>
<% //——————定义“删除”的功能函数 function shanchu(){ //接收从FLASH传递过来的序号ID var id=Request("xuhao_flash"); //删除的SQL语句 sql="delete from shujubiao where xuhao="+id; //执行数据库查询 rs.Open(sql, lianjie, 3); } %>
说明:对比上一节给出的ASP代码,眼尖的朋友一定会发现有几处不同:
- 最后一段关闭连接的代码没了,为什么要删除呢?这是为了在同一个ASP文件中多次利用一个连接对象和recordset对象。其实正规的写法里,是不推荐这么做的,这里只是为了演示和讲解方便,大家以后自己做留言本的时候,建议每个功能函数里都重新声明连接对象和recordset对象,并在函数结尾关闭。
- 最后一段加了一个“shanchu”函数,它接收从FLASH传递过来的记录序号,并执行删除语句。
- 在第三段的功能逻辑代码区,调用“shanchu”函数。
- xianshi”函数中的SQL语句最后加了一段:“order by xuhao desc”,这是让记录按xuhao字段倒序排列,这个是为以后“添加”功能服务的,它可以让最新添加的记录显示在最上边,便于我们观察。这里我们可以先不用理会它。
好的,后台文件搞定了,现在回到FLASH中彻底完成我们的删除功能吧:) 打开“zonghe.fla”,输入下面的代码:
//================系统初始化================= //——————界面初始化 //编码 System.useCodepage = true; //——————变量初始化 //声明一个“选项”变量,ASP中将根据这个变量决定当前演示的是那项功能 //初始化这个变量为“显示”,用来显示记录 var xuanxiang = "显示"; //当前页初始为第1页 var dangqianye = 1; //每页记录数初始为5条 var meiyejilu = 5; //——————数组初始化 //——————对象初始化 //LV对象,从上到下依次用于“显示”,“删除”,“添加”,“更新”演示 var xianshi_lv = new LoadVars(); var shanchu_lv = new LoadVars(); var tianjia_lv = new LoadVars(); var gengxin_lv = new LoadVars(); //================逻辑功能区================== //——————显示功能测试 xianshi(); //——————删除功能测试 shanchu_btn.onRelease = function() { shanchu(); }; //================函数模块区================== //——————“显示”功能 function xianshi() { //将选项设置为“显示” xuanxiang = "显示"; //LV对象获取“选项”内容 xianshi_lv.xuanxiang_flash = xuanxiang; //获取“当前页” xianshi_lv.dangqianye_flash = dangqianye; //获取“每页记录数” xianshi_lv.meiyejilu_flash = meiyejilu; //将以上获取的内容传递给FLASH xianshi_lv.sendAndLoad("zonghe.asp?bianliang="+random(9999), xianshi_lv, "post"); //加载完成后显示一系列相关信息 xianshi_lv.onLoad = function(chenggong) { if (chenggong) { //显示当前页(直接从FLASH获得) dangqianye_txt.text = dangqianye; //显示每页记录数(直接从FLASH获得) meiyetiaoshu_txt.text = meiyejilu; //显示总条数,总页数和本页的记录内容 zongtiaoshu_txt.text = xianshi_lv.zongtiaoshu_ 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页 |