java.sql.sqlexception:列计数与准备语句的第1行的值计数不匹配

osh3o9ms  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(377)

如何解决代码中的此错误
java.sql.sqlexception:列计数与第1行的值计数不匹配
我已经创建了一个数据库employeelist,在sql中包含表信息和字段

| Type         | 

| NAME        | varchar(100) |
| FATHER_NAME | varchar(100) | 
| MOTHER_NAME | varchar(100) | 
| LAST_NAME   | varchar(100) | 
| GENDER      | varchar(1)   | 
| DOB         | int(2)       | 
| MOB         | varchar(10)  | 
| YOB         | int(4)       | 
| ADDRESS     | varchar(200) | 
| PHONE       | int(10)      | 
| EMAIL       | varchar(100) | 
| PAN         | varchar(12)  | 
| ADDHAR      | int(10)      |
package employeemid;

import employeemid.DatabaseConnection;
import javax.swing.*;
import com.mysql.jdbc.PreparedStatement;

import java.awt.*;
import java.awt.event.*;    // importing event package for event listener
import java.sql.Connection;
import java.sql.Statement;

public class RegForm{
    //Creating Static variables
    static JTextField name_txt ;
    static JTextField fname_txt;
    static JTextField mname_txt;
    static JTextField lname_txt;
    static JRadioButton male;
    static JRadioButton female;
    static JComboBox day;
    static JComboBox month;
    static JComboBox year;
    static JTextArea add_txtArea;
    static JTextField phone_txt;
    static JTextField email_txt;
    static JTextField pc_txt;
    static JTextField a_txt;
    static JCheckBox chkbox;
    static JButton submit_btn;
    static JTextArea output_txtArea;

    //public static void main(String args[])
    public RegForm()
    {
        /* ---------------------------------- Creating JFrame -------------------------------------------------------- */
        //  1 :  Creating a frame using JFrame class    
        JFrame frame=new JFrame("Registration Form Example");  
        frame.setVisible(true);      
        frame.setBounds(200,100,700,600 );    
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

        //  2 : setting background color of Frame.       
        Container c=frame.getContentPane();   
        c.setLayout(null);    
        c.setBackground(Color.cyan);     

        /*---------------------------------- Creating JLabel for Heading Text ------------------------------------------- */

        Font f=new Font("Arial",Font.BOLD,20);   // Creating font style and size for heading

        //  3 : creating JLabel for Heading
        JLabel heading_lbl=new JLabel();
        heading_lbl.setBounds(250,5,200,40);
        heading_lbl.setText("<html><font><u><b>Registration Form</b></u></html>");  

        // applying font on  heading Label
        heading_lbl.setFont(f);

        /* ----------------------------------- Creating Global Font style for all components ------------------------------ */

        Font f1=new Font("Arial",Font.BOLD,14);

        /* ----------------------------------- Creating components for Registration details ---------------------------------- */

        //  4 : Creating JLabel for Name
        JLabel name_lbl=new JLabel("Name : ");
        name_lbl.setBounds(50,80,100,30); 

        // Creating JTextField for Name
        name_txt=new JTextField();
        name_txt.setBounds(180,80,180,30);  

        //  5 : Creating JLabel for Father's Name
        JLabel fname_lbl=new JLabel("Father's Name : ");
        fname_lbl.setBounds(50,120,150,30);  

        // Creating JTextField for Father's name
        fname_txt=new JTextField();
        fname_txt.setBounds(180,120,180,30);

        //  6 : Creating JLabel for Mother's Name
        JLabel mname_lbl=new JLabel("Mother's Name : ");
        mname_lbl.setBounds(50,160,150,30);  

        // Creating JTextField for Mother's name
        mname_txt=new JTextField();
        mname_txt.setBounds(180,160,180,30);

        //  7 : Creating JLabel for Last Name
        JLabel lname_lbl=new JLabel("Last Name : ");
        lname_lbl.setBounds(50,200,150,30);  

        // Creating JTextField for Mother's name
        lname_txt=new JTextField();
        lname_txt.setBounds(180,200,180,30);

        //  8 : Creating JLabel for Gender
        JLabel gender_lbl=new JLabel("Gender : ");
        gender_lbl.setBounds(50,240,150,30);   

        // Setting Cursor for components
        Cursor cur=new Cursor(Cursor.HAND_CURSOR);      

        // Creating JRadioButton for the Male       
        male=new JRadioButton("Male");
        male.setBounds(180,240,70,30);
        male.setBackground(Color.cyan);
        male.setCursor(cur);

        // Creating JRadioButton for the Female
        female=new JRadioButton("Female");
        female.setBounds(280,240,80,30);
        female.setBackground(Color.cyan);
        female.setCursor(cur);

        // Creating ButtonGroup for the JRadioButtons
        ButtonGroup gender_grp=new ButtonGroup();
        gender_grp.add(male);    // adding male radio button in the ButtonGroup
        gender_grp.add(female);    // adding female radio button in the ButtonGroup

        //  9 : Creating JLabel for Date of Birth
        JLabel dob_lbl=new JLabel("Date of Birth : ");
        dob_lbl.setBounds(50,280,100,30);   

        // Creating JComboBox for the day
        String day_arr[]=new String[31];
        for(int i=1;i<=31;i++)
            day_arr[i-1]=Integer.toString(i);       
        day=new JComboBox(day_arr);
        day.setBounds(180,280,40,30);

        // Creating JComboBox for the month
        String month_arr[]={"Jan","Feb","March","April","May","June","July","Aug","Sept","Oct","Nov","Dec" };   
        month=new JComboBox(month_arr);
        month.setBounds(230,280,60,30);

        // Creating JComboBox for the year  
        String year_arr[]=new String[70];
        for(int i=1951;i<=2020;i++)
            year_arr[i-1951]=Integer.toString(i);
        year=new JComboBox(year_arr);
        year.setBounds(300,280,60,30);

        //  10 : Creating JLabel for the Address
        JLabel add_lbl=new JLabel("Address : ");
        add_lbl.setBounds(50,320,100,30);               

        // Creating JTextArea for the address
        add_txtArea= new JTextArea();
        add_txtArea.setBounds(180,320,180,100);

        //  11 :  Creating JLabel for the phone
        JLabel phone_lbl=new JLabel("Phone No. : ");
        phone_lbl.setBounds(50,450,100,30);

        // Creating JTextField for the phone
        phone_txt=new JTextField();
        phone_txt.setBounds(180,450,180,30);

        //  12 : Creating JLabel for the Email
        JLabel email_lbl=new JLabel("Email : ");
        email_lbl.setBounds(50,490,100,30);

        // Creating JTextField for the Email
        email_txt=new JTextField();
        email_txt.setBounds(180,490,180,30);    

        //  13 : Creating JLabel for the Pan Card
        JLabel pc_lbl=new JLabel("PanCard no: ");
        pc_lbl.setBounds(50,530,100,30);

        // Creating JTextField for the pan card
        pc_txt=new JTextField();
        pc_txt.setBounds(180,530,180,30);                   

        //  14 : Creating JLabel for the Aadhaar
        JLabel a_lbl=new JLabel("Aadhar no : ");
        a_lbl.setBounds(50,570,100,30);

        // Creating JTextField for the Aadhar
        a_txt=new JTextField();
        a_txt.setBounds(180,570,180,30);                    

        //  15 : Creating JCheckBox for the license agreement       
        chkbox=new JCheckBox("I accept the terms and conditions");
        chkbox.setBounds(50,610,300,30);
        chkbox.setBackground(Color.cyan);

        //  16 : Creating JButton for submit the details
        submit_btn=new JButton("Submit");
        submit_btn.setBounds(180,680,120,40);
        submit_btn.setCursor(cur);  // Applying hand cursor on the button

        //  17 :  Adding ActionListener on submit button
        submit_btn.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                submit_action(event);                                   
            }           
        });

        //  18 : Creating JTextArea for output
        output_txtArea=new JTextArea();
        output_txtArea.setBounds(380,80,500,320);

        //  19 : Applying Global Font on all the JLabels    
        name_lbl.setFont(f1);
        fname_lbl.setFont(f1);
        mname_lbl.setFont(f1);
        lname_lbl.setFont(f1);
        gender_lbl.setFont(f1);
        dob_lbl.setFont(f1);
        add_lbl.setFont(f1);
        phone_lbl.setFont(f1);
        email_lbl.setFont(f1);
        pc_lbl.setFont(f1);
        a_lbl.setFont(f1);

        //  20 : Applying Font on all JTextFields, JRadioButtons, JComboBox and JTextArea
        name_txt.setFont(f1);
        fname_txt.setFont(f1);
        mname_txt.setFont(f1);
        lname_txt.setFont(f1);
        male.setFont(f1);
        female.setFont(f1);
        add_txtArea.setFont(f1);
        phone_txt.setFont(f1);
        email_txt.setFont(f1);
        pc_txt.setFont(f1);
        a_txt.setFont(f1);
        chkbox.setFont(f1);
        submit_btn.setFont(f1);
        output_txtArea.setFont(f1);

        //  21 : Adding label components to the container 
        c.add(heading_lbl); 
        c.add(name_lbl);            
        c.add(fname_lbl);
        c.add(mname_lbl);
        c.add(lname_lbl);
        c.add(gender_lbl);
        c.add(male);
        c.add(female);
        c.add(dob_lbl);
        c.add(add_lbl);
        c.add(phone_lbl);
        c.add(email_lbl);
        c.add(pc_lbl);
        c.add(a_lbl);

        //  22 : Adding JTextField, JTextArea, JComboBox, JCheckBox, JRadioButton to the container
        c.add(name_txt);
        c.add(name_txt);
        c.add(fname_txt);
        c.add(mname_txt);
        c.add(lname_txt);
        c.add(day);
        c.add(month);
        c.add(year);
        c.add(add_txtArea);
        c.add(phone_txt);
        c.add(email_txt);
        c.add(pc_txt);
        c.add(a_txt);
        c.add(chkbox);
        c.add(submit_btn);
        c.add(output_txtArea);                          
    }

    //  23 : Reading value from the Registration Form
    public static void submit_action(java.awt.event.ActionEvent event){
        if(chkbox.isSelected()==true)
        {
            String name=name_txt.getText();
            String fname=fname_txt.getText();
            String mname=mname_txt.getText();
            String lname=lname_txt.getText();
            String gender="Male";
            if(female.isSelected()==true)
                gender="Female";
            String day_name=(String)day.getSelectedItem();
            String month_name=(String)month.getSelectedItem();
            String year_name=(String)year.getSelectedItem();
            String add=add_txtArea.getText();
            String phone=phone_txt.getText();
            String email=email_txt.getText();
            String pc=pc_txt.getText();
            String a=a_txt.getText();
            //PreparedStatement ps=conn.prepareStatement
            //String query = "insert into data(Name,MiddleName,LastName,gender,Bday,Bmonth,Byear,Address,PhoneNo,Mail,PAN,Addhar) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

            try {

                Connection conn_1 = DatabaseConnection.getConnection();
                //Statement stmt = conn_1.createStatement();
                //first you "prepare" your statement (where the '?' acts as a kind of placeholder)
                PreparedStatement st = (PreparedStatement) conn_1.prepareStatement( "insert into info (Name,MiddleName,LastName,gender,Bday,Bmonth,Byear,Address,PhoneNo,Mail,PAN,Addhar) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
                //String query =
                //now you bind the data to your parameters
                st.setString(1, name_txt);
                st.setString(2, fname_txt.getText());
                st.setString(3, mname_txt.getText());
                st.setString(4, lname_txt.getText());
                st.setString(5, gender.toString());
                st.setString(6, day.getSelectedItem().toString());
                st.setString(7, month.getSelectedItem().toString());
                st.setString(8, year.getSelectedItem().toString());
                st.setString(9, add_txtArea.getText());
                st.setString(10, phone_txt.getText());
                st.setString(11, email_txt.getText());
                st.setString(12, pc_txt.getText());
                st.setString(13, a_txt.getText());

                //and then you can execute it
                st.executeUpdate();

            } catch (Exception e) {
                System.out.println(e);
            }

            // displaying value in the JTextArea
            output_txtArea.setText(" Name :   " +name + "\n Father's Name :  " +fname +"\nMother's Name: "+mname+"\nLastName: "+lname+ "\n Gender :   "+gender +
                    "\n Date of Birth :   "+day_name + "  "+month_name + " " +year_name +  
                    "\n Address :  "+add + " \n Phone no :  "+phone + 
                    "\n Email :  "+email + "\nPan Card no: "+pc+ "\nAadhaar no"+a+ "\n ");

        }
        else
        {
            output_txtArea.setText("Please accept the terms and condition");
        }

    }

}
xam8gpfp

xam8gpfp1#

如果我正确地阅读了您的代码,那么您的sqlinsert语句中缺少first name列。所以你应该用这个:

String sql = "INSERT INTO info (Name, FirstName, MiddleName, LastName, gender, ";
sql += "Bday, Bmonth, Byear, Address, PhoneNo, Mail, PAN, Addhar) ";
sql += "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
PreparedStatement st = (PreparedStatement) conn_1.prepareStatement(sql);
// then bind your values as you already are doing

相关问题