我在这里有用于登录的代码,遇到此错误,“ 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
}
您正在将用户和密码都分配给相同的参数(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());