简单测试JSP,出现问题,JSP代码:<%@ page language="java" contentType="text/html;charset=GB2312"%>
<%@ page import="java.sql.*"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<% 
 String memberName = null;   
 int logontimes = -1;            
 ResultSet rs = null;
 try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(java.lang.ClassNotFoundException e){
System.err.println(e.getMessage());
};
try{
Connection conn = DriverManager.getConnection("jdbc:odbc:My_Book");
Statement stmt = conn.createStatement();
String strSQL= "SELECT logon,name FROM buyinfo WHERE ID = 'wow' AND pwd = '123'";
rs = stmt.executeQuery(strSQL);while (rs.next()){
logontimes=rs.getInt("logon");
memberName=rs.getString("name"); 
} stmt.close();
conn.close();}
catch(SQLException e){
System.err.println( e.getMessage());
}
%>
Logon:
<%=logontimes%>
Name:
<%=memberName %></body>
</html>应该输出结果是Logon: 11 Name: wow 但实际上输出却是 Logon: -1 Name: null 请问这是什么地方出的问题?补充一下
我的环境是:Tomcat6.0 数据库是Access,
数据库在JAVA程序下访问正常,只是在JSP情况下不能正常。

解决方案 »

  1.   

    while (rs.next()){
    logontimes=rs.getInt("logon");
    memberName=rs.getString("name"); 
    } 换成
    if (rs.next()){
    logontimes=rs.getInt("logon");
    memberName=rs.getString("name"); 

    不知道符不符合要求
      

  2.   

    原来又开了一贴~~SELECT logon,name FROM buyinfo WHERE ID = 'wow' AND pwd = '123'
    这句话直接在数据库控制台执行有返回结果吗?
      

  3.   

    SELECT logon,name FROM buyinfo WHERE ID = 'wow' AND pwd = '123'
    有结果,直接在JAVA下运行,很正常就是在JSP下出不来结果,有点奇怪,呵呵
      

  4.   

    换成
    while (rs.next()){
    logontimes=rs.getInt(1);
    memberName=rs.getString(); 
      

  5.   

    while (rs.next()){
    logontimes=rs.getInt("logon");
    memberName=rs.getString("name"); 
    } 在JAVA测试通过。所以不太像是这里的问题
    感觉是不是我的Tomcat出问题呢?
      

  6.   

    换成
    while (rs.next()){
    logontimes=rs.getInt(1);
    memberName=rs.getString(2); 

    还是出不来结果,
    所以我猜我的程序应该是没有错的所以猜想是不是Tomcat配置出错,或者JSP连接数据库还需要什么辅助插件呢?
      

  7.   

    你在while语句前面加上一句System.out.println(rs != null);
    看看输出什么?
      

  8.   

    抱歉,打错了,加上System.out.println(rs.next());
      

  9.   

    在while语句前面加上<%=rs.next()%>
    或者 System.out.println(rs.next());都试了
    什么输出都没有我也从新做了个JSP+Access的程序,结果也是什么都没有越来越感觉是我的机子配置出问题了
      

  10.   

    太晚了
    今天先顶一下 防止沉了
    明天用SQL server 再试一下
      

  11.   

    boolean next() throws SQLException
    将指针从当前位置下移一行。ResultSet 指针最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。 
    如果开启了对当前行的输入流,则调用 next 方法将隐式关闭它。读取新行时,将清除 ResultSet 对象的警告链。System.out.println(rs.next());应该输出true或者false,如果什么都没输出,可能就是抛异常了,看看后台输出吧。
      

  12.   

    1.这个应该没执行,把rs打印出来看看.
    while (rs.next()){
    logontimes=rs.getInt("logon");
    memberName=rs.getString("name"); 
    } 2.试试先
    Logon:
    <%=logontimes%>
    Name:
    <%=memberName %>
    再关掉conn,stmt
      

  13.   

    try{
    Connection conn = DriverManager.getConnection("jdbc:odbc:My_Book");
    Statement stmt = conn.createStatement();
    String strSQL= "SELECT logon,name FROM buyinfo WHERE ID = 'wow' AND pwd = '123'";
    rs = stmt.executeQuery(strSQL);
    if(rs!=null)
    while (rs.next()){
            try{
        System.out.println(rs.getInt("logon"));  //看看打印出???????
        logontimes=rs.getInt("logon");  
    }catch(Exception ex){
        System.out.println("logontimes Error:"+ex.getMessage());
    }
    try{
        System.out.println(rs.getInt("name"));//看看打印出???????
        memberName=rs.getString("name");   
    }catch(Exception ex){
        System.out.println("memberName Error:"+ex.getMessage());
    }


    }
    }catch(SQLException e){
    System.err.println( e.getMessage());
    }finally{
     try{
    if(conn!=null)
    conn.close(); 
    }catch(Exception er){}
     try{
    if(stmt!=null)
     stmt.close();
    }catch(Exception er){}
    }
      

  14.   

    while (rs.next()){
            try{
        System.out.println(rs.getInt("logon"));  //看看打印出???????
        logontimes=rs.getInt("logon");  
    }catch(Exception ex){
        System.out.println("logontimes Error:"+ex.getMessage());
    }
    try{
        System.out.println(rs.getInt("name"));//看看打印出???????
        memberName=rs.getString("name");  rs.getInt和rs.getString 好像只能取一次值吧?
      

  15.   

    System.out.println(rs.next());应该输出true或者false,如果什么都没输出,可能就是抛异常了,看看后台输出吧。怎么看后台输出?
      

  16.   

    <%@ page language="java" contentType="text/html;charset=GB2312"%>
    <%@ page import="java.sql.*"%> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <%!
     String memberName = null;   
     int logontimes = -1;            
     ResultSet rs = null;
    %>
    <%
     try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }
    catch(java.lang.ClassNotFoundException e){
    System.err.println(e.getMessage());
    };
    try{
    Connection conn = DriverManager.getConnection("jdbc:odbc:My_Book");
    Statement stmt = conn.createStatement();
    String strSQL= "SELECT logon,name FROM buyinfo WHERE ID = 'wow' AND pwd = '123'";
    rs = stmt.executeQuery(strSQL);while (rs.next()){
    logontimes=rs.getInt("logon");
    memberName=rs.getString("name"); 
    } stmt.close();
    conn.close();}
    catch(SQLException e){
    System.err.println( e.getMessage());
    }
    %>
    Logon:
    <%=logontimes%>
    Name:
    <%=memberName %>
      

  17.   

    老师强调:不要在JSP页面内有很多JAVA代码;数据库连接类与JSP分开,另外做一个JAVA文件。
      

  18.   

    因为ID = 'wow' AND pwd = '123'"的记录在access中根本不存在
      

  19.   

    看看rs.next()的值是true还是false然后设置断点进入循环体内看看
      

  20.   

    问题解决了
    问题出在Tomcat的配置上,
    我用SUN  Application Server PE 9 作服务器
    成功的输出了结果,果然不是程序的问题,而是服务器配置的问题谢谢大家对我的问题提出的解决方法,人很多,20分数不知道该给谁,所以最后给brooksychen(初晨之阳) 了
    他是最早回应的,而且提出方法,让我学到很多。