Я хочу напечатать имя пользователя после входа с его ID в другом JFrame
Я следовал этому методу, но он не работает
//this class to login
public mClass() {
// Frame build :
setSize(800, 600);
setTitle(" page1 ");
setDefaultCloseOperation(EXIT_ON_CLOSE);
Toolkit toolkit = getToolkit();
Dimension size = toolkit.getScreenSize();
setLocation(size.width / 2 - getWidth() / 2,
size.height / 3 - getHeight() / 3);
//Panel & BackGround :
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(null);
panel.setBackground(Color.decode("#DFDDCE"));
// text box
JTextField user = new JTextField();
user.setBounds(245, 300, 300, 40);
user.setFont(newFonts);
user.setForeground(Color.decode("#5195E1"));
panel.add(user);
// text for box :
JLabel tx = new JLabel(" Enter your ID to login.");
tx.setBounds(245, 30, size.width, size.height);
panel.add(tx);
//submit button :
JButton login = new JButton(" login ");
login.setBounds(245, 355, 300, 40);
login.setBorder(new LineBorder(Color.decode("#5195E1")));
login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// Class.forName("com.mysql.jdbc.Driver");
String host = "jdbc:mysql://localhost:3306/mybase?serverTimezone=UTC";
String uName = "root"; String uPass = "dataroot";
Connection con = DriverManager.getConnection(host, uName, uPass);
String password=user.getText();
String sql = "SELECT * FROM mstable where m_pass=? ";
PreparedStatement pst = con.prepareStatement(sql);
pst.setString(1,password);
ResultSet rs = pst.executeQuery();
if(rs.next()) {
new welcomeMs();
dispose();
}
else { JOptionPane.showMessageDialog(null,"wrong id , Please try again ");
} }
catch ( SQLException ex) { System.out.println(ex); }
} });
panel.add(login);
//back button :
setVisible(true);
}
public String getuserName() {
return this.user;
}
}
Я хочу показать имя в этот класс
// i extend this class to the last Class
try {
// Class.forName("com.mysql.jdbc.Driver");
String host = "jdbc:mysql://localhost:3306/mybase?serverTimezone=UTC";
String uName = "root";
String uPass = "dataroot";
Connection con = DriverManager.getConnection(host, uName, uPass);
String sql = "SELECT m_name FROM mstable where m_pass = 'getuserName()' ";
PreparedStatement pst = con.prepareStatement(sql);
//pst.setString(1, getuserName());
ResultSet rs = pst.executeQuery();
rs.next();
JLabel label = new JLabel();
label.setText(rs.getString(1) + " welcome ");
label.setBounds(402, -295, size.width, size.height);
panel.add(label);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,ex);
}
f.setVisible(true);
Когда я пытаюсь войти в систему, появляется это сообщение: "недопустимая операция с пустым набором результатов" или когда я удаляю // "Индекс параметра выходит за пределы диапазона (1> количество параметров, что 0). " Я думаю, что ошибка в
pst.setString(1, getuserName());
// или
label.setText(rs.getString(1) + " welcome ");