回 帖 发 新 帖 刷新版面

主题:谁给我看看这段代码有什么问题

我刚学ASP,现在想写个会员注册系统,这个是我接收注册页面的信息,,
我要怎样把他输出来呢,
我用response.Redirect("index2.asp")
response.End()     
这个没问题吧,,

<% 
Dim username,userpass,ip,city,imsi
Dim aaa,bbb,ccc,ddd,eee,fff

username=Trim(Request.form("name"))
userpass=Trim(Request.rorm("pass"))
ip=Trim(Request.Form("ip"))
city=Trim(Request.form("city"))
imsi=Trim(Request.form("imsi"))
aaa=Trim(Request.Form("aaa"))
bbb=Trim(Request.Form("bbb"))
ccc=Trim(Request.Form("ccc"))
ddd=Trim(Request.Form("ddd"))
eee=Trim(Request.Form("eee"))
fff=Trim(Request.Form("fff"))

Dim connstr,conn,data
    data = "admin.mdb"
    Connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ChkMapPath(data)    
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open Connstr

set rs=server.createobject("adodb.recordset")
      rs.open "admin",connstr,3,3
      rs.addnew
      rs("name")=username
      rs("pass")=userpass
      rs("ip")=ip
      rs("city")=city
      rs("imsi")=imsi
      rs("aaa")=aaa
      rs("bbb")=bbb
      rs("ccc")=ccc
      rs("ddd")=ddd
      rs("eee")=eee
      rs("fff")=fff
   rs.update
   rs.close
set rs=nothing
   Conn.Close
Set Conn = Nothing
  
response.Redirect("index2.asp")
response.End()      
%>

回复列表 (共7个回复)

沙发

response.Redirect("index2.asp")
这个是转到index2.asp页,输出用response.write 

板凳

首先我得说这样的程序不是很好。你用了rs.addnew,这是不提倡的,加入你的数据库设置了自动编号的元素,你这条记录就不能插入到数据库,而是报错。另一方面,你查询的记录不能特别方便的读取在插入后马上去读取出该条记录。所以我建议你改为用SQL语句中的insert操作。
    你说到的你用了response.Redirect("index2.asp")这是可以的,并且在另一个页面执行新的操作加强了软件的内聚性、可维护性,降低了软件的耦合性。不过你的在前面加入数据后读出刚刚加入记录的主键(不如说ID),作为index2
.asp的参数,即response.Redirect("index2.asp")改为response.Redirect("index2.asp?ID=刚才取得的主键")。在index2.asp中根据ID读取数据库中的数据,然后按照楼上一位所说的response.write()输出。

3 楼

同意楼上两位的说法.
对于插入记录Insert是我比较推崇的.建议使用!

4 楼

1楼的不懂,2楼的胡扯
3楼的还在支持,我超.

用不用rs.addnew 要取决与实际情况自己决定,用Insert语句插入固有速度相对较快的好处,但同时拼凑也会烦琐,不能插入过大的数据,并且楼主是初学者,用rs.addnew相对思路要清晰的多..

另外2楼的,什么设置了自动编号的元素,就不能插放到数据库去..
如果因为您不会的话,可以收声,但不要教错了初学者..

楼主,您的问题出在这里..
rs.open "admin",connstr,3,3
这一句
"admin" <- 这是怎么回事? 你写的存储过程吗?
如果admin是一个表,请改成
"select * from [admin]"
为了优化插入速度,我们改为:
"select * from [admin] where 1<>1"
我来解释一下,where 1<>1 也就是说条件结果永远为False
就不会查询到任何一条记录出来了..
这样提高了查询返回记录集的速度..

跟着第二个参数,你传了connstr
仔细往上看,你写的connstr是一个字符串变量
而这个参数要的是数据库连接对象
也就是你上面定义的Conn
所以应该写为:
rs.open "select * from [admin] where 1<>1",conn,3,3

这样一改,基本上就没什么问题了..

5 楼

4楼的找出了程序的一个错误,恭喜你!这种优化我以前使用过,方法不错,不过搂主是要把输入的数据输出的功能的实现。

   作为B/S结构的网站和应用系统,其主要的几种开发技术(除ASP技术外)在数据库方面没有或者摒弃了addnew的方法,好好想想JDBC中有吗,PHP、CGI中有吗,ado.net更是采用了基于XML的无连接数据保存方法。addnew是一种即将摒弃的方法,所以不建议使用,否则以后软件的重用性,可维护性将大大降低。学习ASP也一样朝着这个方向优化才能成为一个真正的程序员。尤其港学者,注意学习时要保持学习内容的长期性。不要港学好了,就不会被用了。
 
   另外:4楼的请注意说话用语,保持网络干净,这是你素质的体现。如果你觉得别人是在“胡说”,那么你看看自己有多少软件开发经验,有多少计算机理论基础,只不过是懂得了一些零散的技术而异罢了。从你的说话可知。
   

6 楼

对于他这样的初学者来说,还是一步一步的走清晰吧...

rs.addnew都用不好,你又告诉他不要用。。他会晕的。。。

而且
“你用了rs.addnew,这是不提倡的,加入你的数据库设置了自动编号的元素,你这条记录就不能插入到数据库,而是报错。”

从你这句话难到看不出你有多少基础?

我激动,直接攻击你了。。
是因为我讨厌教错初学者。。。

7 楼

rs.addnew用这个也是能自动编号。

我来回复

您尚未登录,请登录后再回复。点此登录或注册