主题:  数据库问题

csdjyzd

职务:普通成员
等级:1
金币:0.0
发贴:35
#12004/10/30 17:58:11
<%@ Language=Jscript %>
<% var conn = Server.CreateObject("ADODB.Connection");
    conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" +
    Server.MapPath("test.mdb"));
    rs = Server.CreateObject("ADODB.Recordset");
    sql = "Select * from studentinfo where 学号="+Request.Form("x2");
    rs.Open(sql,conn,3);
ts =Server.CreateObject("ADODB.Recordset");
str="Select * from grade where 学号="+Request.Form("x2")+ " AND 课程名='"+Request.Form("ch")+"'";
ts.Open(str,conn,3);

if (rs("姓名")==Request.Form("x1"))
if (ts("成绩")==-1)
Response.Redirect("test.asp?xuehao="+Request.Form("x2"));
else
Response.Redirect("error.asp?id=2");
else
Response.Redirect("error.asp?id=1");
%>

这个是我写的用户登陆的判断页面,x1,x2分别是前一页面姓名和学号文本框名
ch是一个下拉框的名。。
运行时,不管输什么姓名学号是只会跳到error.asp页面且id是1。。。。
我第一次试着用JSP写不知道是哪里有错误~~

另谁知道JSP有关数据库方面的介绍比较详细的网站吗?

有没有网页设计调试用的软件,可以跟踪调试的?

编辑历史:[此帖最近一次被 csdjyzd 编辑过(编辑时间:2004-10-30 18:06:27)]


缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#22004/10/30 18:30:13
检查为什么rs("姓名")!=Request.Form("x1"))

另外,这个是js写的asp,不是jsp



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#32004/10/30 20:00:17
if (rs("姓名")==Request.Form("x1"))
{
    if (ts("成绩")==-1)
    {
        Response.Redirect("test.asp?xuehao="+Request.Form("x2"));
    }
    else
    {
        Response.Redirect("error.asp?id=2");
    }
else
{
    Response.Redirect("error.asp?id=1");
}

你的判断嵌套错误,没有括号的只能跟一句。建议全部使用括号。


非常大鱼

csdjyzd

职务:普通成员
等级:1
金币:0.0
发贴:35
#42004/10/30 20:11:10
这个登陆页是用学号和姓名登陆的~~
前面以学号为条件查询数据库
后面与姓名比较的来判断是否正确

还有,我把括号+起也不行也。。
蓝鲸大哥你写的少个},我把他+在了最后一个else的前面~~~
可还是一样的结果。。。。。。



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#52004/10/30 20:21:20
用Response.Write输出一下这个Request.Form("x1")值,并输出一下ts("成绩")值作验证,就知道错在那一步了。

其实你的SQL可以不必这样,可以把两个表内连起来查询,SQL语句如
SELECT S.学生号, S.姓名, G.成绩
FROM StudentInfo S
INNER JOIN Grade G
ON S.学生号 = G.学生号 AND G.课程 = '语文'

去参考一下SQL查询用法,你的程序效率为成倍提高。

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2004-10-30 20:40:29)]

非常大鱼

csdjyzd

职务:普通成员
等级:1
金币:0.0
发贴:35
#62004/10/30 21:53:42
奇怪。。。
我试了用Response.Write输出各值
全都正确。。。。
那肯定是判断语句的问题。。。
可是,判断语句有错吗?
GOD。。疯了。。。
为什么总是只执行跳到error.asp页,id=1....
无语了~~



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#72004/10/30 22:07:12
response.write(rs("姓名").length+"<br>"+Request.Form("x1").length)
看看是不是有无谓的其他空格之类的字符



csdjyzd

职务:普通成员
等级:1
金币:0.0
发贴:35
#82004/10/30 22:14:26
试过了。。结果是
undefined
undefined



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#92004/10/30 22:38:14
首先请先更正你的if写法,一定用括号,可能这个嵌套是错误的,有清晰的写法,验正错误方便。
另请确定是Request.Form吗,从表单提交过来的??
请把Response.Redirect暂改为Response.Wirite "Error In No.1",是否有其它地方也套用跳转。
书写一定清晰,否则难查错。


非常大鱼

csdjyzd

职务:普通成员
等级:1
金币:0.0
发贴:35
#102004/10/31 11:49:22
Response.Write (rs("姓名"));
Response.Write (ts("成绩"));
Response.Write (Request.Form("x1"));
这3个语句结果..
欧丽-1欧丽
但是,我把其他的if都去了只留下
if (rs("姓名")!=Request.Form("x1"))
{ Response.Write("学号姓名错误!");}
依然显示学号姓名错误..............
难道这个判断语句有问题.............
另问逻辑与是&还是&&

可明明显示的rs("姓名")和Request.Form("x1")都是一样的...为什么会不相等????
真的是要疯了..............
都没信心继续做下去了...................

编辑历史:[此帖最近一次被 csdjyzd 编辑过(编辑时间:2004-10-31 12:29:42)]


缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#112004/10/31 12:33:34
Response.Write(rs("姓名").length+"<br>"+Request.Form("x1").length)

上面写错了,js区分大小写



csdjyzd

职务:普通成员
等级:1
金币:0.0
发贴:35
#122004/10/31 12:46:44
我区分了的...
一样是undefined
undefined
难道我系统有问题.....................................



csdjyzd

职务:普通成员
等级:1
金币:0.0
发贴:35
#132004/10/31 14:15:18
555555555555
没有人知道为什么吗??????
这下挂了~~



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#142004/10/31 19:39:38
我不知用js怎样写ASP,把两个值都强制转换成string类型,再用函数把空格去掉。
用VB写呢,现在基本都用VB写ASP,js版的教材都少。


非常大鱼

缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#152004/10/31 20:36:21
有on error resume next么?