2014-11-18 4 views
3

я здесь мой код для входа в систему и я встречая эту ошибку, «java.sql.SQLException: Не задано значение для параметра 2»java.sql.SQLException: Не задано значение для параметра 2

иногда , "java.sql.SQLException: Индекс параметров вне диапазона (1> количество параметров, равное 0)." У меня действительно нет никакой идеи.

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

Вы назначаете как пользователя и пароль для того же параметра (1).

Изменить это:

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

к этому:

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

Это действительно помогло, спасибо. –

0

SQL индексов начинается с нуля. используйте следующие данные:

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

Неверно: https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#setString%28int,%20java.lang.String%29 – Tom

+2

ok @Tom, я понял. –

Смежные вопросы