로그인 프로그램을 만들려고하고 있는데 GUI의 사용자 이름/암호를 데이터베이스와 상호 참조해야하는데 현재 코드가 있지만 "잘못된 사용자 이름/암호! ", 데이터베이스의 동일한 분량의 사람들에게. 실제로 작동하도록하는 데 도움이 될 것입니다. 내 코드는 아래와 같습니다.데이터베이스에 대한 교차 검사 정보
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Login extends JFrame {
JTextField _username = new JTextField(10);
JPasswordField _password = new JPasswordField(10);
JButton _login = new JButton("Login");
JButton _exit = new JButton("Exit");
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = (int)screenSize.getHeight();
int screenWidth = (int)screenSize.getWidth();
public Login() {
super("Login to panel");
setLayout(new GridLayout(3,2,1,1));
add(new JLabel("Username:"));
add(_username);
add(new JLabel("Password:"));
add(_password);
add(_login);
_login.addActionListener(new LoginListener());
add(_exit);
_exit.addActionListener(new ExitListener());
setSize(250, 100);
//setLocation(screenWidth/3, screenHeight/3);
setLocation(500, 400);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Login();
}
public class LoginListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Connection con;
Statement stmt;
ResultSet rs;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:collegesys","root","0blivi0n");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery("SELECT * FROM main");
PreparedStatement loginTime = con.prepareStatement("UPDATE `main` WHERE ID = ?");
while(rs.next()) {
if(_username.getText() == rs.getObject("username") && _password.getText() == rs.getObject("password")) {
dispose();
new Panel();
} else {
JOptionPane.showMessageDialog(null, "Incorrect Username/Password!");
}
}
} catch(SQLException sqle) {
sqle.printStackTrace();
} catch(ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
}
}
public class ExitListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
dispose();
System.exit(0);
}
}
}
이것은 내 프로그램 기능에 전혀 도움이되지 않습니까? –
@ NathanKreider 사용자 이름과 비밀번호를 비교하는 방식이 이상하고 ==와 작동하지 않기 때문에 이상합니다. 더 많은 정보가 없으면 우리가 할 수있는 것이 많지 않습니다. 또한 사용자가 이미 선택할 수있는 데이터를 가지고있을 때 전체 사용자 데이터베이스를 살펴 보는 것은 매우 비효율적입니다. –