Я хочу создать страницу входа, в которую может войти только администратор.
Моя база данных: - пароль пользователя tb_users user_id (PK)
-tb_userauth user_id (FK) objects_id (содержат роли пользователя, такие как администратор и клиент)
это моя программа:
private void cmd_loginActionPerformed(java.awt.event.ActionEvent evt) {
try{
String sql = "select * from tb_users where user_id=? and password=?";
PST=conn.prepareStatement(sql);
PST.setString(1,txt_userid.getText());
PST.setString(2, txt_pass.getText());
RS=PST.executeQuery();
RS.close();
String sql2 = "select * from tb_userauth where objects_id=?";
PST=conn.prepareStatement(sql2);
RS=PST.executeQuery();
String objek = "admin";
String objek_id = RS.getString("objects_id");
if(RS.next()){
if (objek.equals(objek_id)){
JOptionPane.showMessageDialog(null,"user id and password correct");
submenu1 sm1 = new submenu1();
sm1.setVisible(true);
sm1.pack();
sm1.setLocationRelativeTo(null);
sm1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.dispose();
}else{
JOptionPane.showMessageDialog(null,"check your password and user id ");
} }
}catch (Exception e){
JOptionPane.showMessageDialog(null,e);
}
}
и я получил ошибку, подобную этой: java.sql.SQLException: Нет значений, указанных для параметра 1
это меня смущает, потому что я уже использую String objek_id = RS.getString("objects_id");
что-то не так с моим ResultSet?
Вы пропустили параметр второго подготовленного оператора. Я предполагаю, что вы допустили ошибку в запросе, поэтому я изменяю запрос и комментирую изменения. Я не запускал и не тестировал, поэтому некоторые проблемы могут быть там. У вас есть идея по этому поводу.
private void cmd_loginActionPerformed(java.awt.event.ActionEvent evt) {
try{
String sql = "select * from tb_users where user_id=? and password=?";
PST=conn.prepareStatement(sql);
PST.setString(1,txt_userid.getText());
PST.setString(2, txt_pass.getText());
RS=PST.executeQuery();
String user_id = RS.getString("user_id"); //I don't know the type of use_id so I guess it as string
RS.close();
String sql2 = "select * from tb_userauth where user_id=?"; //I change object_id to user_id
PST=conn.prepareStatement(sql2);
PST.setString(1,user_id);//this might not be string
RS=PST.executeQuery();
String objek = "admin";
String objek_id = RS.getString("objects_id");
if(RS.next()){
if (objek.equals(objek_id)){
JOptionPane.showMessageDialog(null,"user id and password correct");
submenu1 sm1 = new submenu1();
sm1.setVisible(true);
sm1.pack();
sm1.setLocationRelativeTo(null);
sm1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.dispose();
}else{
JOptionPane.showMessageDialog(null,"check your password and user id ");
}
}
}catch (Exception e){
JOptionPane.showMessageDialog(null,e);
}
}
objects_id
) во втором запросе. что не понятно?