代码:
try{
String s="select * from member where loginname=? and password=?";
PreparedStatement    stmt=conn.prepareStatement(s);
ResultSet rs=stmt.executeQuery(s);
if(bl)
{
stmt.setString(1,loginname);
stmt.setString(2,password);
boolean m =rs.next();
if(m==true)
{
message="登陆成功!";
       lg.setMessage(message);
       lg.setLoginname(loginname);

}
错误:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? and password=?' at line 1
显示页面:null
欢迎您的到来: null 

解决方案 »

  1.   

    应该先传值,在执行ResultSet rs=stmt.executeQuery(s);
      

  2.   

    String s="select * from member where loginname=? and password=?"你没有为这条Sql注入值,即loginname和password的判断值
      

  3.   

    stmt.setString(1,loginname);
    stmt.setString(2,password);上面的东西应该写在ResultSet rs=stmt.executeQuery(s);之前
      

  4.   

    改成这样:
    try{
    String s="select * from member where loginname=? and password=?";
    PreparedStatement stmt=conn.prepareStatement(s);
    if(bl)
    {
    stmt.setString(1,loginname);
    stmt.setString(2,password);
    ResultSet rs=stmt.executeQuery(s);
    boolean m =rs.next();
    if(m==true)
    {
    message="登陆成功!";
    lg.setMessage(message);
    lg.setLoginname(loginname);
    }在executeQuery之前一定要 给?设置
      

  5.   

    如果 bl为false,那么就不进这个if语句,sql中就没有值,当然错误。
    还有就是不能先写executeQuery,再
    stmt.setString(1,loginname);
    stmt.setString(2,password);应该先set,然后 executeQuery。