0

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

登录课程....

public class LoginForm extends javax.swing.JFrame {

String username;
String password;

//rest of code here

我如何检索要在该行中另一个类的准备语句中使用的 Loginform 用户名和密码(“SELECT * FROM AcademicInfo where 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
  } 
4

1 回答 1

2

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

请注意,另一种方法是让您的 db 相关类引用LoginForm并调用适当的 getter,例如getPassword()getUsername()

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

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

db.retrieveAcademic(username, password);

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

(您可能希望将usernameandpassword字段包装到单独的对象Credentials或类似对象中,但那是以后的事了)

于 2012-12-27T12:56:02.690 回答