2016-06-26 9 views
-1
try { 
    setPassword(txtPassword.getText()); 
    setUsername(txtUserName.getText()); 

    MessageDigest md; 

    md = MessageDigest.getInstance("MD5"); 
    byte messgeDigest[] = md.digest(getPassword().getBytes()); 
    BigInteger number = new BigInteger(1, messgeDigest); 
    String hashtext = number.toString(16); 

    String qry = "SELECT * FROM users WHERE username=? AND password=?"; 
    pst = mscon.conn().prepareStatement(qry); 
    pst.setString(1, getUsername()); 
    pst.setString(2, hashtext); 
    rs = pst.executeQuery(); 

    if (rs.next()) { 
     JOptionPane.showMessageDialog(null, "Login Successful"); 
     System.out.println("Login"); 
    } 
    else{ 
     System.out.println("Tri again"); 
    } 
} catch (NoSuchAlgorithmException ex) { 

} catch (SQLException ex) { 
    Logger.getLogger(MS_Login.class.getName()).log(Level.SEVERE, null, ex); 
} 

このコードでは、if(rs.next)の部分は機能しません。私はそのブロックにいくつかの単語を印刷しようとしましたが、表示されません。何が問題なの?whats happend with if(rs.next)

+1

何が問題なのですか? – tkausl

+0

ああ、よく、else-blockの仕事はありますか? – tkausl

+0

ハッシュアルゴリズムが期待どおりに動作しない可能性があります。どのようにデータベースに挿入するためのパスワードを生成しますか? – home

答えて

-1

rs.next()結果セットにレコードが存在する場合に返されます。あなたの再集合が空であるため、あなたのために働いていません。デバッグして、実行しているクエリの結果が何であるかを確認してください。

+0

ありがとう!私はこれを得た – Priyantha

1

rs.next()次の行を取得しようとします。行が返された場合はtrueが返され、それ以上行がない場合はfalseが返されます。

明らかに、クエリは行を返していません。

プログラムをデバッグして、デバッグモードで実行するか、単にstdoutに値を出力するか、パラメータの値を表示します。

関連する問題