如何在另一个类中检索用户名和密码?

时间:2012-12-27 12:53:10

标签: java mysql sql database

以下LOGINFORM类存储用于登录GUI的正确用户名和密码。

登录课程......

public class LoginForm extends javax.swing.JFrame {

String username;
String password;

//rest of code here

如何检索要在行中另一个类的预准备语句中使用的Loginform用户名和密码 (“SELECT * FROM AcademicInfo,Email =?and Password =?”);取代? ,这将使我能够从sql数据库中获取特定字段?

检索课程......

public void retrieveAcademic() {

try {
pst = con.prepareStatement("SELECT * FROM AcademicInfo where Username=? and Password=?");
rs = pst.executeQuery();
while (rs.next()) {
          title = (rs.getString(2));
          forename = (rs.getString(3));
          surname = (rs.getString(4));
          role = (rs.getString(5));
          room = (rs.getString(6));
          page = (rs.getString(7));
          hours = (rs.getString(8));
          phone = (rs.getString(9));
          mobile = (rs.getString(10));
          email = (rs.getString(11));


         } //end while
  } 

1 个答案:

答案 0 :(得分:2)

Loginform需要引用到包含retrieveAcademic()方法的类的实例。如何创建/传递该引用在很大程度上取决于应用程序的结构(例如,通过依赖注入,简单的构造等)。

请注意,您的数据库相关类可以选择引用LoginForm并调用相应的getter,例如getPassword()getUsername()

但我怀疑您需要某种包含这些凭据的模型对象,以便其他组件可以在需要时访问它们。您的登录表格是暂时的,您将来可能还有其他登录方式(例如,您可能有网络服务或类似服务)。我意识到这可能是远远超前的想法,但你明白了。

然后传递用户名/密码的最简单方法是将它们作为2个参数传递,例如

db.retrieveAcademic(username, password);

并在方法中调用PreparedStatement.setString()以获取相应的字段。

(您可能希望将usernamepassword字段包装到单独的对象Credentials或类似对象中,但这样做是为了以后的事情)