标题:数据库为何是空的 (附代码)
只看楼主
子夜寒玢
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2004-7-14
 问题点数:0 回复次数:18 
数据库为何是空的 (附代码)
我在一本书中看了一个简单asp注册页面的源代码,照着它打下来后一运行,一切都很正常。页面也已显示注册成功。而,access数据库中却无数据。请问:在对数据库操作时,除了对其简单的输入字段名外,还需不需要其它的设置。如不需要,那又是什么原因呢?可否请哪位高手指教一下!!!!

[此贴子已经被作者于2004-07-15 19:15:24编辑过]

搜索更多相关主题的帖子: 数据库 代码 
2004-07-14 17:51
regedit
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:950
专家分:0
注 册:2004-6-8
得分:0 
把代码发上来!

最新作品:百货品牌商品资讯第一门户([url]http://www./[/url]),欢迎交流
2004-07-14 18:36
子夜寒玢
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2004-7-14
得分:0 
没错吧 :-)

数据插入页面:register.asp

<%@ language=vbscript %> <% response.buffer=true %> <html> <body> <% dim username dim email dim userpw dim address dim truename dim sex function sqlstr(data) sqlstr="'" & replace(data,"'","''") & "'" end function application.lock '接受数据 name=trim(request.form("username")) userpw=trim(request.form("userpw")) email=trim(request.form("email")) sex=request.form("sex") truename=trim(request.form("truename")) address=trim(request.form("address")) connstr="dbq="+server.mappath("register.mdb")+";defaultdir=; driver={microsoft access driver (*.mdb)};" set conn=server.createobject("adodb.connection") conn.open connstr '判断此用户是否已经存在 set rst=server.createobject("adodb.recordset") rst.activeconnection=conn sql="select *from register where username=" sql=sql & sqlstr(username) rst.source=sql rst.open if not rst.eof then response.write "此用户名已经存在,请选择其它的用户名重新注册!" rst.close response.end else sql="insert into register(username,userpw,email,truename,address,sex) values(' " sql=sql & sqlstr(username) & " ', ' " sql=sql & sqlstr(userpw) & " ',' " sql=sql & sqlstr(email) & " ',' " sql=sql & sqlstr(sex) & " ',' " sql=sql & sqlstr(truename) & " ',' " sql=sql & sqlstr(address) & " ')" conn.execute sql '插入数据库 application.unlock '完成数据库操作,可以释放锁定的数据库操作权限 response.write "<h2 align=center>注 册 成 功 , 请 <a href=""register.html"">登 陆</a>本 社 区 。</h2>" end if %> </body></html>

注册页面:register.html

<html> <head> <title>注册迷你sky虚拟社区</title> <script language=vbscript> <!-- sub tijiao_onclick() if len(register.username.value)<3 then msgbox "用户名太短,请输入一个长度大于3的名字!" register.username.select exit sub end if if instr(trim(register.username.value)," ")>1 then msgbox "用户名中请不要加入空格!" register.username.select exit sub end if if len(register.userpw.value)<4 then msgbox "密码太短,请选择一个长度大于4的密码!" register.userpw.select exit sub end if if register.userpw.value<>register.verifypw.value then msgbox "确认密码和密码不同,请确认您的密码!" register.userpw.value="" register.verifypw.value="" register.userpw.select exit sub end if if register.truename.value="" then msgbox "为了为您更好的服务,请输入您的真实姓名!" register.truename.select exit sub end if if register.email.value="" then msgbox "为了能为您更好的服务,请输入您的电子邮箱地址!" register.email.select exit sub else if not right(register.email.value,4)=".com" and not right(register.email.value,4)=".net" and not right(register.email.value,3)=".cn" or instr(register.email.value,"@")<=1 or instr(register.email.value,"@.") then msgbox "请正确输入您的电子邮箱地址!" register.email.select exit sub end if end if if register.address.value="" then msgbox "请输入您的详细地址!" register.address.select exit sub end if register.submit end sub --> </script> <style type="text/css"> <!-- .class1{border-style:solid;border-color:#666666;border-width:1;border-top:0px;border-right:0px;border-left:0px;} .class2{font:10pt;} .class3{font:12pt;} .class4{color:#ff00ff;} --> </style> </head> <body class=claass2 leftmargin=0 topmargin=30> <h2 align=center ><font size=6 face="华文楷体" color=#000000>欢迎成为迷你Sky虚拟社区的注册用户</font></h2> <hr size=1 color==#999933 width=800 align=center></hr><br> <font color=#ff0000 class=class2>&nbsp;&nbsp;&nbsp;&nbsp;您的位置:注册页面&nbsp;&nbsp;&nbsp;注意:带*号的项目为必填项目!</font><br><br> <form memthod="post" action="register.asp" name="register"> <table width="600" height="307" border="0" align="center" cellpadding="0" cellspacing="0" class=class3> <tr> <td width="227" align=center>&nbsp;&nbsp;用户名:</td> <td width="373"><input type="text" name="username" size=30 maxlength=16 class=class1> <font class=class4>*</font></td></tr> <tr> <td align=center>选择密码:</td> <td><input type="password" name="userpw" size=30 maxlength=16 class=class1> <font class=class4>*</font></td></tr> <tr> <td align=center>确认密码:</td> <td><input type="password" name="verifypw" size=30 maxlength=16 class=class1> <font class=class4>*</font></td></tr> <tr> <td align=center>真实姓名:</td> <td><input type="text" name="truename" size=30 maxlength=16 class=class1> <font class=class4>*</font> </td></tr> <tr> <td align=center>选择性别:</td> <td ><input type="radio" checked name="sex" value="男">男&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="sex" value="女">女&nbsp;&nbsp;&nbsp; <font class=class4>*</font></td></tr> <tr> <td align=center>Email地址:</td> <td><input type="text" name="email" size=30 maxlength=50 class=class1> <font class=class4>*</font></td></tr> <tr> <td align=center>联系地址:</td> <td><input type="text" name="address" size=30 maxlength=255 class=class1> <font class=class4>*</font></td></tr> <tr> <td align=center><input type="button" name="tijiao" value="提 交"></td> <td><input type="reset" value="重 填" name="chongtian"></td> </tr> </table>

</form> </body></html>

[此贴子已经被作者于2004-07-17 19:45:48编辑过]

2004-07-15 10:05
子夜寒玢
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2004-7-14
得分:0 
补充一下 :-)
我仅仅在数据库中,建了username,userpw,email,address,sex,truename几个列,而没做其他任何的操作,是不是该对数据库作其它的一些操作??还请高手指教一下!!!!我用的是2000的操作系统,不过我认为应该与操作系统无关吧!如果您在您的机子上运行成功的话,请指教一下子夜寒玢,在此先谢谢您了!!!

[此贴子已经被作者于2004-07-17 19:46:46编辑过]

2004-07-15 10:11
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
得分:0 
你把程序和数据打包一下传 上来

天津网站建设 http://www./
2004-07-15 23:40
子夜寒玢
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2004-7-14
得分:0 

[attach]494[/attach] 请帮我看看我的程序,我是一只小菜鸟,实 在看不出来是怎么回事了!!!!麻烦你了!!伤心王子!!!

********************************************************************************************** ********************************************************************************************* 蛰伏的梦想永远是不可缺少的梦想和钥匙。 梦想的实现需要不屑的努力! 编程论坛圆我们共同的梦!!!

2004-07-16 13:03
哈马拟
Rank: 1
等 级:新手上路
帖 子:270
专家分:0
注 册:2004-7-15
得分:0 

我认为关键在于sqlstr()子程序

这个子程序实现的功能估计肯定有错误

function sqlstr(data) sqlstr="'" & replace(data,"'","''") & "'" end function

标了红色的那里估计就有错,(注意,那里是两个单引号)怎么会用两个单引号去代替一个单引号?

肯定应该是用一个双引号去代替一个单引号!

但到底要改成什么样我还没想出来


2004-07-16 16:00
子夜寒玢
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2004-7-14
得分:0 

那句代码的作用是把所有的单引号换为双引号,防止恶意人士的恶意输入。避免asp引号漏洞。

好象没错吧!好多书中都是这么讲的。

抽空看看我的代码,愁死我了!!您要是想出来,麻烦告诉子夜寒玢一声。万分感

谢!!!!

[此贴子已经被作者于2004-07-16 16:22:39编辑过]

2004-07-16 16:21
哈马拟
Rank: 1
等 级:新手上路
帖 子:270
专家分:0
注 册:2004-7-15
得分:0 

我还是想确认一下

你说“页面也已显示注册成功。而,access数据库中却无数据

而我也试着运行了下,其实在ACCESS数据表中是有增加数据的,只是增加的记录中各个字段均为空!!

如果在表设计图中,将各(或一)个字段设置为“不允许空字符串”,那么ASP运行就要出错(其实是数据库不允许插入这样的记录(不允许字段值为空)

另外,你再检查下你的源程序

function sqlstr(data) sqlstr="'" & replace(data,"'","''") & "'" end function

那里是两个单引号,不是一个双引号!!!


2004-07-16 17:22
子夜寒玢
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2004-7-14
得分:0 

对呀兄弟!!!!你说的都很有道理呦!!

我是没办法了,也不知道其他的高手,或者是版主能不能帮帮咱的忙!!!!!!

给你推荐个好东西,我在今天在网上发现的:(请点击):

100个asp初学者必研究的小程序:

很好的,你看看吧!!!!!!!!!!!!!!!!1

[此贴子已经被作者于2004-07-16 18:37:22编辑过]

2004-07-16 18:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-3364-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062718 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved