请大家帮帮忙,看下面那有问题,
public String getMessage()
    {try{
         con=DriverManager.getConnection("jdbc:odbc:lcp","","");
         sql=con.createStatement();
          String condition=
         "SELECT * FROM admin WHERE name = '"+logname+"'";
          rs=sql.executeQuery(condition);
          int rowcount=0;
          String ps=null;
         while(rs.next())
           { rowcount++;
             logname=rs.getString("logname");
                     ps=rs.getString("password");
           }
         if((rowcount==1)&&(password.equals(ps)))
           { message="ok";
             success="ok";
           }
        else
           {message="输入的用户名或密码不正确";
            success="false";
           }
        con.close();
        return message;
       }
     catch(SQLException e)
       { message="输入的用户名或密码不正确";
         success="false";
         return message;
       }
    }
用户名跟密码输入正确就会出现catch里面的文字,输入不正确就出现else里面的文字

解决方案 »

  1.   

    看看进入while循环没有~
    不会是logname,ps变量没定义吧:)
      

  2.   

    你的logname在什么地方获得的,GET方法外面定义了吧
    个人认为logname=rs.getString("logname");这句问题去掉试下
    既然已经传递进用户名了就不用在从数据库里获得了 如果想再次获得建议再建立一个字段。
      

  3.   

    logname在jsp页面获取的,已经定义了POST方法,
    把logname=rs.getString("logname");这句问题去掉,问题还是存在 ,可能是没有进入while循环,我将
    while(rs.next())
               { rowcount++;
                 logname=rs.getString("logname");
                         ps=rs.getString("password");
               }
             if((rowcount==1)&&(password.equals(ps)))
               { message="ok";
                 success="ok";
               }
            else
               {message="输入的用户名或密码不正确";
                success="false";
               }
    改为
    while(rs.next())
               { message="ok";
                 success="ok";
                         }
    还是得到catch里面的文字
      

  4.   

    public String getMessage() {
    try{
             con=DriverManager.getConnection("jdbc:odbc:lcp","","");
             sql=con.createStatement();
             String condition = "SELECT * FROM admin WHERE name = '"+logname+"'";
             rs=sql.executeQuery(condition);
             int rowcount=0;
             String ps=null;
    while(rs.next())

    rowcount++;
    String logname = rs.getString("logname");
    String ps = rs.getString("password");
             
    String message = null ;
    String succes = null ;
    if((rowcount==1)&&(password.equals(ps))) { 
    message="ok";
    success="ok";
    }else{
    message="输入的用户名或密码不正确";
    success="false";
    }
        return message; rs.close();
    sql.close();
    con.close();
    }
    catch(SQLException e) { 
    message="输入的用户名或密码不正确";
    success="false";
    return message;
           }
    }改了一下,看行不行
      

  5.   

    logname值你是怎么传递进入public String getMessage()方法的你在getMessage()方法外面定义了没?在JSP页面获得logname是使用SET方法传入BEAN?还是在JSP页面设置属性形式传入BEAN的
    POST提交交给什么程序了,怎么进入getMessage()方法的?? 
    要是没有传入的话?你不但进不了WHILE
    String condition="SELECT * FROM admin WHERE name = '"+logname+"'";
    这句就已经错了
    在catch里面加System.out.println (e.toString()) 把例外信息输出来。
      

  6.   

    Login.javapackage lcp;
    import java.sql.*;
    public class Login
    {   String logname,
               password,
               success="false",
               message=""; //用来返回登录是否成功的消息。
        Connection con;
        Statement sql;
        ResultSet rs;
        public Login()
        {  //加载桥接器:
           try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
              }
           catch(ClassNotFoundException e){}
            try {
                jbInit();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
       //设置属性值、获取属性值的方法:
       public void setLogname(String name)
        {  logname=name;
        }
       public String getLogname()
        {return logname;
        }
       public void setPassword(String pw)
        {  password=pw;
        }
        public String getPassword()
        {return password;
        }   public String getSuccess()
        {return success;
        }
       //查询数据库的member表:
       public String getMessage()
        {try{
             con=DriverManager.getConnection("jdbc:odbc:lcp","","");
             sql=con.createStatement();
              String condition=
             "SELECT * FROM admin WHERE name = '"+logname+"'";
              rs=sql.executeQuery(condition);
              int rowcount=0;
              String ps=null;
             while(rs.next())
               {rowcount++;
                 logname=rs.getString("logname");
                         ps=rs.getString("password");
               }
             if((rowcount==1)&&(password.equals(ps)))
               { message="ok";
                 success="ok";
               }
            else
               {message="输入的用户名或密码正确";
                success="false";
               }
            con.close();
            return message;
           }
         catch(SQLException e)
           { message="输入的用户名或密码不正确";
             success="false";
             return message;
           }
        }    private void jbInit() throws Exception {
        }
    }
      

  7.   

    admin_login.jsp<%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="lcp.Login" %>
    <%! //处理字符串的方法:
      public String codeString(String s)
        { String str=s;
           try{byte b[]=str.getBytes("ISO-8859-1");
               str=new String(b);
               return str;
             }
          catch(Exception e)
             { return str;
             }
        }
    %>
    <html>
    <head>
    <title>
    admin_login
    </title>
    </head>
    <body bgcolor="#ffffff"  >
    <p>
    </p>
    <center>
    <%String str=response.encodeURL("admin_login.jsp");
    %>
    <FORM action="<%=str%>" Method="post">
      <table><tr><th><h2>管理员登录</h2></th></tr>
      </table>
      <table>
        <tr>
          <td>管 理 员:</td>
          <td><input type="text" name="logname" size="20"></td>
        </tr>
        <tr>
        <td>密码:</td>
        <td><input type="password" name="password" size="20"></td>
        </tr>
        </table>
       <tr>
        <td><input type="submit" value="登录" name="b1" > </td>
        </tr>
        <tr>
          <td> <input type="reset" value="重置" name="b2"></td>
            </tr>
    </form>
    <jsp:useBean id="login" class="lcp.Login" scope="session" >
    </jsp:useBean>
    <% //提交信息后,验证信息是否正确:
       String  message="",
               logname="",
               password="";
        if(!(session.isNew()))
        {logname=request.getParameter("logname");
            if(logname==null)
               {logname="";
               }
         logname=codeString(logname);
         password=request.getParameter("password");
            if(password==null)
               {password="";
               }
         password=codeString(password);
       }
     %>
    <%
       if(!(logname.equals("")))
        {
       %>
         <jsp:setProperty  name= "login"  property="logname"  value="<%=logname%>" />
         <jsp:setProperty  name= "login"  property="password"  value="<%=password%>" />
       <%
         message=login.getMessage(); //获取返回的验证信息。
            if(message==null)
              {message="";
              }
       }
     %>
     <%  if(!(session.isNew()))
          { if(message.equals("ok"))
              {String meb=response.encodeURL("admin_index.jsp");
               response.sendRedirect(meb);
              }
            else
              {out.print(message);
              }
          }
      %>
    </center>
    </body>
    </html>
      

  8.   

    <FORM action="<%=str%>" Method="post">里面写成<FORM action="" Method="post">
      

  9.   

    <%String str=response.encodeURL("admin_login.jsp");
       put.println(str);
    %>
    看下获得的什么路径 可能获得路径不对。
    为空就是提交自身。
      

  10.   

    LZ你真是太可爱了 我写什么你就写什么那有PUT。println(str);呀
      

  11.   

    我刚学的,有些改了,怕出丑就没说,我用out.println(str); 显示admin_login.jsp
      

  12.   

    那你就把这句去掉
    response.encodeURL("admin_login.jsp");应该是返回一个URL吧 
    <FORM action="" Method="post">这样不行吗????
      

  13.   

    logname=codeString(logname);在这句后面 加一句out.println(logname);看提交后LOGNAME是什么
    你加我MSN:[email protected]
    这么说累
      

  14.   

    你在catch里面加System.out.println (e.toString()) 把例外信息输出来。贴给我看
      

  15.   

    java.sql.SQLException:Column not found.logname=codeString(logname);在这句后面 加一句out.println(logname);看提交后LOGNAME是我输入的字母
      

  16.   

    你数据库里面没有logname字段呀