Хранение ввода Java в базе данных SQL с использованием подготовленного оператора

Как я могу вводить данные с помощью подготовленного оператора, используя jtextfield, чтобы сохранить его в базе данных sql? Я использовал jtextfield для переменных, но при передаче его в качестве параметра в подготовленном операторе появляется следующее сообщение об ошибке: - Метод setString (int, String) в типе PreparedStatement не применим для аргументов (int, JTextField). Может ли кто-нибудь заставить меня понять, в чем проблема и какое решение можно применить

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 data (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);//error from here
                        st.setString(2, fname_txt);
                        st.setString(3, mname_txt);
                        st.setString(4, lname_txt);
                        st.setString(5, gender);
                        st.setString(6, day);
                        st.setString(7, month);
                        st.setString(8, year);
                        st.setString(9, add_txtArea);
                        st.setString(10, phone_txt);
                        st.setString(11, email_txt);
                        st.setString(12, pc_txt);
                        st.setString(13, a_txt);
                        //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");
                }
            }
            /*public void reset() {
                       for(JTextField field : fieldList) {
                          field.setText("");
                       }
                    }*/
        }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
204
1

Ответы 1

Вам нужно изменить

st.setString(1, name_txt);
st.setString(2, fname_txt);
st.setString(3, mname_txt);
st.setString(4, lname_txt);
...
st.setString(9, add_txtArea);
st.setString(10, phone_txt);
st.setString(11, email_txt);
st.setString(12, pc_txt);
st.setString(13, a_txt);

к

st.setString(1, name);
st.setString(2, fname);
st.setString(3, mname);
st.setString(4, lname);
...
st.setString(9, add);
st.setString(10, phone);
st.setString(11, email);
st.setString(12, pc);
st.setString(13, a);

Потому что вы присвоили эти строки переменным:

String name=name_txt.getText();
String fname=fname_txt.getText();
String mname=mname_txt.getText();
String lname=lname_txt.getText();
...
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();

спасибо, я попытался использовать это сначала, прежде чем переключиться на .gettext () Он принимает ввод, но сохранение значений - это то место, где возникает ошибка

Vishnu Ezhuthachan 21.08.2018 17:41

Я понятия не имею, что ты только что сказал

ryvantage 21.08.2018 19:19

Я ранее использовал какой-то метод для ввода данных перед переключением на .gettext (), который является правильным синтаксисом для ввода ввода

Vishnu Ezhuthachan 05.10.2018 18:33

Другие вопросы по теме