以下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
}
答案 0 :(得分:2)
Loginform
需要引用到包含retrieveAcademic()
方法的类的实例。如何创建/传递该引用在很大程度上取决于应用程序的结构(例如,通过依赖注入,简单的构造等)。
请注意,您的数据库相关类可以选择引用LoginForm
并调用相应的getter,例如getPassword()
和getUsername()
但我怀疑您需要某种包含这些凭据的模型对象,以便其他组件可以在需要时访问它们。您的登录表格是暂时的,您将来可能还有其他登录方式(例如,您可能有网络服务或类似服务)。我意识到这可能是远远超前的想法,但你明白了。
然后传递用户名/密码的最简单方法是将它们作为2个参数传递,例如
db.retrieveAcademic(username, password);
并在方法中调用PreparedStatement.setString()以获取相应的字段。
(您可能希望将username
和password
字段包装到单独的对象Credentials
或类似对象中,但这样做是为了以后的事情)