2013-06-18 39 views
0

我有我的类此方法,不兼容的类型。必需的类名。找到int。

public static AccountHolder getAccountHolder(String username, String password) { 

     try { 
      String verifyQuery = "SELECT COUNT(username) FROM accountholder WHERE username=? AND password=?)"; 
      connection = getConnection(); 
      ptmt = connection.prepareStatement(verifyQuery); 

      ptmt.setString(4, username); 
      ptmt.setString(5, password); 

      ResultSet verified = ptmt.executeQuery(); 

      if (verified.next()) { 
       // Only one Result 
       if (verified.getInt(1) == 1) { 
        connection.close(); 
        return 1; 
       } else { 
        connection.close(); 
        return null; 
       } 

      } 
     } catch (Exception ex) { 
     } 
    } 

我知道我应该返回类型账户持有它是一类对象。账户持有类代码如下:

public class AccountHolder { 
    private String firstname; 
    private String lastname; 
    private String username; 
    private String password; 
    private String address; 
    private String phonenumber; 

    // get & set methods(); 
} 

我应该回到使用该方法从数据库匹配用户名密码&。我怎样才能做到这一点?

回答

0

你可以有,如果匹配的记录,发现针对输入的用户名和密码,然后返回一个具体的账户持有的对象,否则无效的方法。

尝试这样的事情,改变列名称按您的模式:

公共静态账户持有getAccountHolder(用户名字符串,字符串密码){

AccountHolder accountHolder = null; 
    try { 
     String verifyQuery = "SELECT * FROM accountholder WHERE username=? AND password=?)"; 
     connection = getConnection(); 
     ptmt = connection.prepareStatement(verifyQuery); 

     ptmt.setString(1, username); 
     ptmt.setString(2, password); 

     ResultSet verified = ptmt.executeQuery(); 

     if (verified.next()) { 
      accountHolder = new AccountHolder(); 
      accountHolder.setFirstName(rs.getString("FIRSTNAME")); 
      accountHolder.setLastName(rs.getString("LASTNAME")); 
      accountHolder.setUsername(rs.getString("USERNAME")); 
      accountHolder.setPassword(rs.getString("PASSWORD")); 
      accountHolder.setAddress(rs.getString("ADDRESS")); 
      accountHolder.setPhoneNumber(rs.getString("PHONENUMBER")); 

     } 
    } catch (Exception ex) { 
    } finally { 
       connection.close(); 
    } 
    return accountHolder ; 
} 
0

您需要将ResultSet中的元素作为答案转换为AccountHolder的对象,并返回该元素而不是行return 1;

0

试图改变你的代码

PreparedStatement stmt = conn.prepareStatement(
     "SELECT USERNAME FROM accountholder 
          WHERE USERNAME = ? AND PASSWORD = ?"); 
stmt.setString(1, username); 
stmt.setString(2, password); 
ResultSet rs = stmt.executeQuery(); 
if (rs.next()) { 
    // valid credentials 
} else { 
    // invalid credentials 
} 
0
Change that prepared statement query like this 

pm.setString(1,username); 
pm.setString(2,password); 

and 

assign the setters like this 
accountholder.setUserName(verified.getString(1)); 
accountholder.setpassword(verified.getString(2)); 


get those values in array or any collection for retrieval. 
相关问题