Board logo

标题: 程序出错了,大家帮忙看看!!先谢了 [打印本页]

作者: geniusjoy    时间: 2007-12-6 17:10     标题: 程序出错了,大家帮忙看看!!先谢了

<%
Set Conn=Server.CreateObject("Adodb.Connection")
C&Server.MapPath("database.mdb")
Conn.Open ConnStr
%>
<!--#include file=conn.asp-->
<%
dim loginname
loginname=trim(request.Form("txtusername"))
set rs=server.CreateObject("adodb.recordset")
sql="select loginuser,userpassword from account where loginuser='"& loginname &"'"
   if rs.state=1 then rs.close
   else
   rs.open sql,conn,1,1
   end if
if rs.eof and rs.bof then
   response.Write "没有用户名".<a href=index.asp>返回</a>
   response.End()
end if
if request.Form("txtpwd")<>rs.fields("userpassword")
   response.Write"密码错误!"<a href=index.asp>返回</a>
end if
   session("loginuser")=rs.fields("loginname")
   response.Redirect("login.asp")
rs.close
conn.close
set rs=nothing
set conn=nothing
%>
这ASP出现了HTTP500的错误,不知道还有那里错了,请大家帮帮忙,看一下,万分感谢.
作者: Nothing    时间: 2007-12-6 19:28

C&Server.MapPath("database.mdb")

这句肯定不对吧
作者: geniusjoy    时间: 2007-12-7 08:12

<%
dim connstr
connstr="provider=microsoft.jet.oledb.4.0;data source="& server.MapPath("datebase.mdb")
set conn=server.CreateObject("adodb.connection")
conn.open connstr
%>
这样写也出现HTTP500错误啊?
请问是什么原因啊 ?
作者: Nothing    时间: 2007-12-7 09:15

使用这个工具,能看到报什么错
这个工具是我以前为了调试ASP程序写的

http://www.lihuasoft.net/download/show.php?id=32
作者: geniusjoy    时间: 2007-12-7 11:20

谢谢你~~!我现在试一下
作者: geniusjoy    时间: 2007-12-7 11:23

出现:“component 'richtx32.ocx' or one of its dependencies not correctly registerde:a file is missing or invalid”
作者: Nothing    时间: 2007-12-7 20:02

那个程序是VB写的,要用到richtextbox控件,你到网上下载一个。
作者: Nothing    时间: 2007-12-7 20:04

你的代码写的够烂的,你看看下面的if语句,有这样写的吗????
  if rs.state=1 then rs.close
   else
   rs.open sql,conn,1,1
   end if
if rs.eof and rs.bof then
   response.Write "没有用户名".<a href=index.asp>返回</a>
   response.End()
end if
if request.Form("txtpwd")<>rs.fields("userpassword")
   response.Write"密码错误!"<a href=index.asp>返回</a>
end if
作者: geniusjoy    时间: 2007-12-7 23:21

请问应该怎么写才对呢?
作者: geniusjoy    时间: 2007-12-7 23:24

大部分是我写的,一些是代码不行,发到QQ群哪里人家叫我改的.
作者: geniusjoy    时间: 2007-12-7 23:26

管理员能说些例子教教我吗?
我学了不久,很多东西都不会哦

作者: Nothing    时间: 2007-12-8 01:28

主要是语法错误,你有些地方都没有引号,还有if then这样基本的语句都不行,建议你找本基础的书,把语法看一遍再说吧,这个别人没办法教你。
作者: geniusjoy    时间: 2007-12-8 22:29

不会吧.IF和then怎么错了? 能否解释一下吗?
作者: Nothing    时间: 2007-12-8 22:57

语法:
if .... then ....
这是一种写法,不支持else等
if .... then
....
end if
这种在then后面不能有东西。

if .... then
...
else
...
end if
这也是一种结构。
作者: geniusjoy    时间: 2007-12-9 00:47

谢谢管理员来帮忙,有不懂的我再来问哦..
万分感谢
作者: geniusjoy    时间: 2007-12-9 00:54

<%
Set Conn=Server.CreateObject("Adodb.Connection")
C& Server.MapPath("database.mdb")
Conn.Open ConnStr
%>
<%
set rs=server.CreateObject("adodb.recordset")
sql="select loginuser,userpassword from account where loginuser='"&trim(request("txtusername"))&"'"
   if rs.state=1 then rs.close
rs.open sql,conn,1,1
if rs.eof=true then
   response.Write "没有用户名".<a href=index.asp>返回</a>
   response.End()
end if
if request.Form("txtpwd")<>rs.fields("userpassword") then
   response.Write"密码错误!"<a href=index.asp>返回</a>
end if
   session("loginuser")=rs.fields("loginname")
   response.Redirect("login.asp")
rs.close
conn.close
set rs=nothing
set conn=nothing
%>
这样写我是HTTP500出错阿:'( .还有那里错呢?
作者: Nothing    时间: 2007-12-9 16:38

response.Write "没有用户名".<a href=index.asp>返回</a>

response.Write"密码错误!"<a href=index.asp>返回</a>
注意引号

response.Write "没有用户名.<a href=index.asp>返回</a>"

response.Write"密码错误!<a href=index.asp>返回</a>"
作者: geniusjoy    时间: 2007-12-10 07:59

<%
Set Conn=Server.CreateObject("Adodb.Connection")
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("upload.mdb")
Conn.Open ConnStr
%>

<%
sql="select loginuser,userpassword from user where loginuser='"& trim(request("txtusername"))&"'"
set rs=server.CreateObject("adodb.recordset")
if rs.state=1 then rs.close
rs.open sql,conn,1,1
   if rs.eof and rs.bof then
             response.Write "用户不存在,<a href=index.asp>返回</a>"
                         response.End
        end if   
        if rs.fields("userpassword")<>request("txtpassword") then
                    response.Write "用户密码错误,<a href=index.asp>返回</a>"
                                response.End
        end if
        session("loginuser")=rs.fields("loginuser")
    response.Redirect("login.asp")
rs.close
conn.close
set rs=nothing
set conn=nothing
%>
11行出现了Microsoft JET Database Engine 错误 '80040e14'

FROM 子句语法错误。
请问这里怎解决呢?
作者: Nothing    时间: 2007-12-11 00:11

你先把access中的表名改一下,不要叫user,这个可能和系统冲突,然后再改SQL语名,原来不是表名叫account吗?user是系统的一个变量,不能乱叫

或是
sql="select loginuser,userpassword from user where loginuser='"& loginname &"'"
改成
sql="select loginuser,userpassword from [user]where loginuser='"& loginname &"'"

如果还不行,可以修改成以下的:

第11行改成
rs.Open sql, conn, 1, 3, adCmdText

还有一种更简便的写法

set rs=server.CreateObject("adodb.recordset")
if rs.state=1 then rs.close
rs.open sql,conn,1,1
改成
set rs=conn.execute(sql)
作者: geniusjoy    时间: 2007-12-11 09:39

明白了。我试一下。谢谢管理员
作者: geniusjoy    时间: 2007-12-13 08:35

11行改成这样就行了
rs.Open sql, conn, 1, 3, adCmdText
请问这是什么原因会这样呢?
麻烦管理员解释一下,我是菜鸟
作者: Nothing    时间: 2007-12-14 12:17

基本的recordset操作参数,你找本书看看

Recordset.Open参数说明

语法:
    recordset.Open Source, ActiveConnection, CursorType, LockType, Options

参数说明:
Source                可选,变体型,计算 Command 对象的变量名、SQL 语句、表名、存储过程调用或持久 Recordset 文件名。 ActiveConnection     可选。变体型,计算有效 Connection 对象变量名;或字符串,包含  ConnectionString 参数。
CursorType       可选,CursorTypeEnum 值,确定提供者打开 Recordset 时应该使用的游标类型。
可为下列常量之一(参阅 CursorType 属性可获得这些设置的定义)。
值  常量                 说明
--- ------------------- -----------------------
0   AdOpenForwardOnly   默认值)打开仅向前类型游标。
1   AdOpenKeyset             打开键集类型游标。
2   AdOpenDynamic         打开动态类型游标。
3   AdOpenStatic               打开静态类型游标。

LockType              可选。确定提供者打开 Recordset 时应该使用的锁定(并发)类型的 LockTypeEnum 值,可为下列常量之一(参见 LockType 属性可获得详细信息)。
值  常量                                   说明
--- -------------------------------- -----------------------
1   AdLockReadOnly           (默认值)只读 — 不能改变数据。
2   AdLockPessimistic         保守式锁定,提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。
3   AdLockOptimistic            开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。
4   AdLockBatchOptimistic  开放式批更新—用于批更新模式(与立即更新模式相对)。
作者: geniusjoy    时间: 2007-12-17 08:34     标题: 数据库更新问题

我数据库中有AA用户名在添加页中添加AA用户名不成功,这里是正常的.
但我在添加页面添加一个新的用户叫"NN"到数据库中,添加成功后,我再添加一个用户又叫NN的,竟然又添加成功了,是不是要更新一下数据库阿?源代码在下面
<!--#include file="conn.asp"-->
<%
sql="select loginuser from account"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3,adcmdtext
%>
<%
dim rs
if request.Form("txtuser")<>"" and request.Form("txtpwd")<>"" then
    if rs("loginuser")<>request.Form("txtuser") then
       strsql="insert into account(loginuser,userpassword) values('"& trim(request("txtuser")) &"','"& trim(request("txtpwd")) &"')"
       rs=conn.execute(strsql)
       response.Write "注册成功"
    else
       response.Write "用户名已存在!,<a href=regist.asp>返回</a>"
    end if
else
response.Write "请输入用户名或密码!"
end if
conn.close
set conn=nothing
%>
作者: Nothing    时间: 2007-12-17 16:17

你在添加新用户的时间,先查看一下用户表里有没有同名用户,有的话提示一下
sql="select loginuser from account"
应当改成
sql="select loginuser from account where username='"& request.Form("txtuser") &"'"
作者: netice    时间: 2007-12-17 22:01

      Nothing比我有耐心啊。。当老师去吧,会出好学生的。。     

代码要写的漂亮点,,不然别人都不愿看怎么帮你修改啊,,
最好多加注释,注意多用TAB。。。。
现在我们这要求1半代码1半注释的,简单的也要注释(变量强烈要求注释)

建议写VB和ASP是要求(变量强制声明)下。。。
作者: geniusjoy    时间: 2007-12-17 22:51

改了这个sql="select loginuser from account where username='"& request.Form("txtuser") &"'"我添加用户时出错哦!!
我下面已经有判断数据库中的用户名是不是等于输入的用户名了if rs("loginuser")<>request.Form("txtuser") then

[ 本帖最后由 geniusjoy 于 2007-12-17 22:55 编辑 ]
作者: Nothing    时间: 2007-12-18 11:41

那个我只是一个示例,具体的还要看你的数据库字段
sql="select loginuser from account where username='"& request.Form("txtuser") &"'"
我只是将loginuser改成了username
你就不能仔细看看?
还有,if rs("loginuser")<>request.Form("txtuser") then 这个判断没有用,只是取数据库里第一条的数据。
我想问一下,你是不是一点基础都没有,如果这样的话,建议你还是买一本书,从头到尾看一遍,感觉你连编程的感觉都没有。
ASP除了编程的基础、HTML、JS外,还需要学习简单的SQL语句、数据库知识。
学编程数据库是最基本的东西。
作者: geniusjoy    时间: 2007-12-18 15:32

我什么都会一点,就是不精通,现在就先精通一样.我是改了
sql="select loginuser from account where loginuser='"& request.Form("txtuser") &"'"
别以为我这么傻照抄下去啊.
作者: geniusjoy    时间: 2007-12-18 16:06

已经成功了.多谢管理员提醒~~!万分感谢,
<%
sql="select loginuser from account where loginuser='"&request.Form("txtuser")&"'"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3,adcmdtext
%>
<%
if request.Form("txtuser")<>"" and request.Form("txtpwd")<>"" then
       strsql="insert into account(loginuser,userpassword) values('"& trim(request("txtuser")) &"','"& trim(request("txtpwd")) &"')"
       If Not conn.Execute(sql).Eof then
              response.Write"用户名已存在!"
           else
              rs=conn.execute(strsql)
          response.Write "注册成功"
           end if
else
response.Write "请输入用户名或密码!"
end if
conn.close
set conn=nothing
%>
这样写就可以了.




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0