Java.sql.SQLException: no value specified for parameter 2

I have a login code and I am facing this error, "java.sql.SQLException: No value for parameter 2"

sometimes, "java.sql.SQLException: Parameter index out of range (1> number of parameters, which is 0)." I really do not know.

 import java.sql.*;
 import javax.swing.*;
 public class Login_form extends javax.swing.JFrame {
 Connection conn=null;
 ResultSet rs = null;
 PreparedStatement pst = null;

 public Login_form() {
    initComponents();
    conn=javaconnect.ConnecrDb();
}


// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jLabel2 = new javax.swing.JLabel();
    jLabel1 = new javax.swing.JLabel();
    txt_password = new javax.swing.JPasswordField();
    txt_user = new javax.swing.JTextField();
    btn_login = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Login", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Trebuchet MS", 1, 18), new java.awt.Color(255, 153, 0))); // NOI18N

    jLabel2.setText("Password:");

    jLabel1.setText("Username:");

    btn_login.setText("Log-In");
    btn_login.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btn_loginActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jLabel1)
                .addComponent(jLabel2))
            .addGap(1, 1, 1)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                .addComponent(txt_password)
                .addComponent(txt_user, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addContainerGap())
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
            .addContainerGap(100, Short.MAX_VALUE)
            .addComponent(btn_login)
            .addGap(36, 36, 36))
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(txt_user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel1))
            .addGap(18, 18, 18)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel2)
                .addComponent(txt_password, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(18, 18, 18)
            .addComponent(btn_login)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addGap(169, 169, 169)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGap(24, 24, 24))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(52, 52, 52)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(93, Short.MAX_VALUE))
    );

    pack();
}// </editor-fold>

private void btn_loginActionPerformed(java.awt.event.ActionEvent evt) {

    //String user=txt_user.getText();
    //String pwd = txt_password.getText();
    String sql = "select * from users_employee where username=? and password=?";
    //  JOptionPane.showMessageDialog(null, sql);

    try{

    pst=conn.prepareStatement(sql);
    pst.setString(1,txt_user.getText());
    pst.setString(1,txt_password.getText());

    rs=pst.executeQuery();

    if(rs.next()){
       /* for(int i=1;i<4;i++)
        {

        }*/
        JOptionPane.showMessageDialog(null, "Succesfully Login");
        new home().setVisible(true);
        this.hide();



    }
    }

    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
        new Login_form().setVisible(true);
    }
}

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new Login_form().setVisible(true);
        }
    });
}
// Variables declaration - do not modify
private javax.swing.JButton btn_login;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPasswordField txt_password;
private javax.swing.JTextField txt_user;
// End of variables declaration

      

}

+3


source to share


2 answers


You assign both user and password to the same parameter (1).

Change this:

pst.setString(1,txt_user.getText());
pst.setString(1,txt_password.getText());

      



:

pst.setString(1,txt_user.getText());
pst.setString(2,txt_password.getText());

      

+3


source


SQL indexes start at zero. use the following statements:



pst.setString(0,txt_user.getText());
pst.setString(1,txt_password.getText());

      

0


source







All Articles