ASP代码中提交表单时写入数据库超级慢

麻烦大侠帮我看看问题出在哪里?为什么提交表单时,反应特别慢,起码要等8秒以上,才能返回“修改成功”index_m.asp文件内容如下,就是在这个文件里修改好表单里的内容,... 麻烦大侠帮我看看问题出在哪里?为什么提交表单时,反应特别慢,起码要等8秒以上,才能返回“修改成功”
index_m.asp文件内容如下, 就是在这个文件里修改好表单里的内容,提交后特别慢,要等很久。
<!--#include file="conn.asp"--><%dim sqlset rs = server.CreateObject("adodb.recordset")sql = "SELECT * FROM member order by ID desc"rs.open sql,conn,1,3do while not rs.eof%><form id="form2" name="form2" method="post" action="modify.asp"><label><input type="text" name="user_ID" value=<%=rs("ID")%>><input type="text" name="user_name" value=<%=rs("name")%>><input type="text" name="user_tel" value=<%=rs("tel")%>><input type="text" name="user_QQID" value=<%=rs("QQID")%>><input type="text" name="user_company" value=<%=rs("company")%>><input type="text" name="user_job" value=<%=rs("job")%>><input type="text" name="user_city" value=<%=rs("city")%>><input type="submit" name="mod" value="修改"></label></form>
<%rs.movenextloop%>
Modify.asp,此文件是接收修改后的表单内容并写入数据库
<!--#include file="conn.asp"-->
<%user_id=request.form("user_id")%>
<%set rs=server.createobject("adodb.recordset")rs.open "select * from member where id="&user_id&"",conn,1,3rs("name")=request.form("user_name")rs("tel")=request.form("user_tel")rs("QQID")=request.form("user_QQID")rs("company")=request.form("user_company")rs("job")=request.form("user_job")rs("city")=request.form("user_city")rs.updaters.closeset rs=nothingresponse.Write("<script>alert('您好,修改成功');location.href='index.asp';</script>")%>
展开
 我来答
注册到抓狂
2013-12-22 · TA获得超过655个赞
知道小有建树答主
回答量:1410
采纳率:72%
帮助的人:342万
展开全部
看了截图的代码,几个问题
Index_M.asp
第一个问题:
rs.open sql,conn,1,3 <----改为 rs.open sql,conn,1,1 '仅是取记录,游标用1即可.
第二个问题,
从页面上看,你应该是表单循环了.这点很奇怪.
语句"SELECT * FROM member order by ID desc",以ID倒排所有记录.用的着这个吗?你要读几条取几条,用不着去历遍所有的记录数的.改成这样,SELECT TOP 1 * FROM member order by ID desc,只取出最后一条记录,当然,如果你那个表单要循环那就另说了.
第三个问题
即是那个表单部分,你确定是要拿来循环?你的循环是列出所有记录的...服务器上资源开销极大.
如果不要,,就不必使用do while not rs.eof ,直接判断数据是否空,,if not (rs.bof and rs.eof) then '这样就行了,后边的 rs.movenext 和 Loop 都可以不要了,直接改成End IF,
第四个问题
不论之前是循环也好,单笔数据也好,打开数据库后,记得要关闭.rs.close;set rs=nothing
--------------------------------------------------------------------------------------------------------------
再说说入库的事情,Modify.asp
前一个页面,不论你是循环也好,不循环也好,都访问了同一个数据表,进行修改操作,我建议你不要再用数据流的方式了,直接用UPDATE语句
Dim user_id,Pname,user_tel......,UpSqlStr
user_id=request.form("user_id")
Pname=request.form("user_name") '你原来使用name做字段名,不建议这样,name,是保留词换一个
user_tel=request.form("user_tel")
....一串的提交,过滤,验证提交数据的合法性...
UpSqlStr="update member set name='&Pname&' , tel='user_tel' ........ where id="&user_id"""
'执行入库部分
Conn.Execute(UpSqlStr) '<-----这一句即可 ,你试试.应该会比你原来的快不少.
更多追问追答
追问
你好,是否介意发个邮件地址给我,我想把所有源码发给你,帮我看看,能改一下就万分感谢了。
追答
datavip#live.cn
#=@
邮箱经常收不到,企鹅吧,7402960
田响建站
2013-12-21 · 田响建站,纯手工建网站
田响建站
采纳数:3384 获赞数:2327

向TA提问 私信TA
展开全部
没什么问题
rs.open "select * from member where id="&user_id&"",conn,1,3
改为
rs.open "select * from member where id="&request.form("user_id") ,conn,1,3
去除不要user_id=request.form("user_id")
试试看
更多追问追答
追问

试了一下,还是慢。我截个图给你看一下我的代码,上面的有点乱

追答
检查一下数椐库
是否有.ldb文件生成
有的话关闭网站-->删除这个.ldb文件后再打开网站看看
是否快了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniapplndo0pqs4tfc0
2013-12-21
知道答主
回答量:52
采纳率:25%
帮助的人:10.2万
展开全部
没有关闭数据库
追问

关了的,刚才的代码比较乱,截个图给你看,我用了rs.close

set rs=nothing

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式