Ошибка: java.sql.sqlexception: значение не указано для параметра 1 - PullRequest
0 голосов
/ 01 мая 2018

Я создал 2 JFrames: фрейм "Patients_Login" и фрейм "Doctors_Login". Я написал метод actionPerformed в кнопке «Войти» в рамке «Patients_Login», и он работает нормально. Хотя я скопировал и вставил точно такой же код в кнопку «Вход» в кадре «Doctors_Login», но это дает мне эту ошибку:

java.sql.sqlexception: не указано значение для параметра 1

Нажмите здесь, чтобы увидеть захват ошибки

Это код кнопки входа в рамку «Patients_Login» (работает):

    btnLogIn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try{



                //connecting to database
                Class.forName("com.mysql.jdbc.Driver");
                Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/clinic", "root", "newpass"); 

                //verifying ID and password code   
                String query="select * from patients where P_ID=? and Password=?";   
                PreparedStatement pst=con.prepareStatement(query);

                pst.setString(1, idTXT.getText());
                pst.setString(2, passwordField.getText());

                ResultSet rs=pst.executeQuery();
                int count =0;
                while(rs.next()){
                    count=count+1;
                }
                if (count ==1){

                    JOptionPane.showMessageDialog(null, "Welcome!");

                    patient_login.setVisible(false);
                    patient_frame.setVisible(true);
                    patient_appointments.setVisible(false);



                }

                else{
                    JOptionPane.showMessageDialog(null, "Incorrect username or password.");
                }

                rs.close();
                pst.close();

                //second query: displaying user info in JLabels 
                String query1="select * from patients where P_ID=?";
                PreparedStatement pst1=con.prepareStatement(query1);

                pst1.setString(1, idTXT.getText());
                ResultSet rs1=pst1.executeQuery();

                while (rs1.next()){

                    IDdraw_LBL.setText(rs1.getString("P_ID"));
                    namedraw_LBL.setText(rs1.getString("Name"));
                    msdraw_LBL.setText(rs1.getString("Medical_Situation"));

                }

                pst1.close();

            }catch(Exception exx) {
                exx.printStackTrace();
            }

        }
    });

А это код кнопки входа в рамку «Doctor_Login» (выдает ошибку):

    btnLogin.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            try{



                                //connecting to database
                                Class.forName("com.mysql.jdbc.Driver");
                                Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/clinic", "root", "newpass"); 

                                //verifying ID and password code   
                                String query="select * from doctors where ID=? and Password=?";   
                                PreparedStatement pst=con.prepareStatement(query);

                                pst.setString(1, docidTXT.getText());
                                pst.setString(2, passwordField.getText());

                                ResultSet rs=pst.executeQuery();
                                int count =0;
                                while(rs.next()){
                                    count=count+1;
                                }
                                if (count ==1){

                                    JOptionPane.showMessageDialog(null, "Welcome!");

                                    Doctor_login.setVisible(false);
                                    doctor_Appointments.setVisible(false);
                                    Doctor_Frame.setVisible(true);

                                }

                                else{
                                    JOptionPane.showMessageDialog(null, "Incorrect username or password.");
                                }

                                rs.close();
                                pst.close();

                                //second query: displaying user info in JLabels 
                                String query1="select * from doctors where ID=?";
                                PreparedStatement pst1=con.prepareStatement(query1);

                                pst1.setString(1, docidTXT.getText());
                                ResultSet rs1=pst1.executeQuery();

                                while (rs1.next()){

                                    DRnamedraw_LBL.setText(rs1.getString("Name"));
                                    no_of_patientsLBL.setText(rs1.getString("Patients"));


                                }

                                pst1.close();

                            }catch(Exception exx) {
                                exx.printStackTrace();
                            }

                        }
                    });

Очевидно, что оба кода абсолютно одинаковы, но я изменил имена объектов и операторы sql.

Примечание: ошибка возникает, когда я запускаю проект, прежде чем я нажму кнопку входа в систему.

Примечание2: после нажатия кнопки «ОК» во всплывающем окне с ошибкой проект работает нормально.

Любая помощь или комментарий будут оценены.

...