简体   繁体   English

在MySQL中插入多行

[英]Insert multiple rows in MySQL

I am trying to insert the details below from the jtextfields into the database. 我正在尝试将以下详细信息从jtextfields插入数据库中。 Columns to be inserted are roomNumberSelected,guestName,passportNo,phoneNo in Guest table. 来宾表中要插入的列是roomNumberSelected,guestName,passportNo,phoneNo。

Currently when it compiles, it only inserts the final row of data. 当前,在编译时,它仅插入数据的最后一行。 I am implementing three-tier architecture in my application. 我正在应用程序中实现三层体系结构。 I believe I have to alter my SQL statement to insert multiple values but I'm unsure on how to go about that. 我相信我必须更改我的SQL语句才能插入多个值,但是我不确定该怎么做。

在此处输入图片说明

UI - GuestDetails.java 用户界面-GuestDetails.java

No. of rooms needed is equivalent to noOfRoomsSelected. 所需房间数等于noOfRoomsSelected。 In this case, noOfSelectedRooms = 5; 在这种情况下,noOfSelectedRooms = 5;

if(noOfRoomsSelected=="1"){

                if(name1.isEmpty()||passportNo1.isEmpty()||phoneNo1.isEmpty()){
                    JOptionPane.showMessageDialog(null, "Some Required field(s) are not entered. Please try again.");
                }

                else{
                g.setSelectedRoomNum(comboBox1.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo1.getText());
                g.setGuestName(tfGuestName1.getText());
                g.setGuestPhoneNo(tfPhoneNo1.getText());
                }
            }

            else if(noOfRoomsSelected=="2"){

                if(name1.isEmpty()||passportNo1.isEmpty()||phoneNo1.isEmpty()
                        ||name2.isEmpty()||passportNo2.isEmpty()||phoneNo2.isEmpty()){

                    JOptionPane.showMessageDialog(null, "Some Required field(s) are not entered. Please try again.");
                }

                else{
                g.setSelectedRoomNum(comboBox1.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo1.getText());
                g.setGuestName(tfGuestName1.getText());
                g.setGuestPhoneNo(tfPhoneNo1.getText());
                g.setSelectedRoomNum(comboBox2.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo2.getText());
                g.setGuestName(tfGuestName2.getText());
                g.setGuestPhoneNo(tfPhoneNo2.getText());
                }
            }

            else if(noOfRoomsSelected=="3"){

                if(name1.isEmpty()||passportNo1.isEmpty()||phoneNo1.isEmpty()
                        ||name2.isEmpty()||passportNo2.isEmpty()||phoneNo2.isEmpty()||
                        name3.isEmpty()||passportNo3.isEmpty()||phoneNo3.isEmpty()){
                    JOptionPane.showMessageDialog(null, "Some Required field(s) are not entered. Please try again.");
                }

                else {

                g.setSelectedRoomNum(comboBox1.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo1.getText());
                g.setGuestName(tfGuestName1.getText());
                g.setGuestPhoneNo(tfPhoneNo1.getText());
                g.setSelectedRoomNum(comboBox2.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo2.getText());
                g.setGuestName(tfGuestName2.getText());
                g.setGuestPhoneNo(tfPhoneNo2.getText());
                g.setSelectedRoomNum(comboBox3.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo3.getText());
                g.setGuestName(tfGuestName3.getText());
                g.setGuestPhoneNo(tfPhoneNo3.getText());
                   }
            }

            else if(noOfRoomsSelected=="4"){
                if(name1.isEmpty()||passportNo1.isEmpty()||phoneNo1.isEmpty()
                        ||name2.isEmpty()||passportNo2.isEmpty()||phoneNo2.isEmpty()||
                        name3.isEmpty()||passportNo3.isEmpty()||phoneNo3.isEmpty()
                        ||name4.isEmpty()||passportNo4.isEmpty()||phoneNo4.isEmpty()){
                    JOptionPane.showMessageDialog(null, "Some Required field(s) are not entered. Please try again.");
                }

                else{
            g.setSelectedRoomNum(comboBox1.getSelectedItem().toString());
            g.setGuestPassportNo(tfPassportNo1.getText());
            g.setGuestName(tfGuestName1.getText());
            g.setGuestPhoneNo(tfPhoneNo1.getText());
            g.setSelectedRoomNum(comboBox2.getSelectedItem().toString());
            g.setGuestPassportNo(tfPassportNo2.getText());
            g.setGuestName(tfGuestName2.getText());
            g.setGuestPhoneNo(tfPhoneNo2.getText());
            g.setSelectedRoomNum(comboBox3.getSelectedItem().toString());
            g.setGuestPassportNo(tfPassportNo3.getText());
            g.setGuestName(tfGuestName3.getText());
            g.setGuestPhoneNo(tfPhoneNo3.getText());
            g.setSelectedRoomNum(comboBox4.getSelectedItem().toString());
            g.setGuestPassportNo(tfPassportNo4.getText());
            g.setGuestName(tfGuestName4.getText());
            g.setGuestPhoneNo(tfPhoneNo4.getText());
                }
            }


            else if(noOfRoomsSelected=="5"){

                if(name1.isEmpty()||passportNo1.isEmpty()||phoneNo1.isEmpty()
                        ||name2.isEmpty()||passportNo2.isEmpty()||phoneNo2.isEmpty()||
                        name3.isEmpty()||passportNo3.isEmpty()||phoneNo3.isEmpty()
                        ||name4.isEmpty()||passportNo4.isEmpty()||phoneNo4.isEmpty()
                        ||name5.isEmpty()||passportNo5.isEmpty()||phoneNo5.isEmpty()){
                    JOptionPane.showMessageDialog(null, "Some Required field(s) are not entered. Please try again.");
                }

                else{
                g.setSelectedRoomNum(comboBox1.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo1.getText());
                g.setGuestName(tfGuestName1.getText());
                g.setGuestPhoneNo(tfPhoneNo1.getText());
                g.setSelectedRoomNum(comboBox2.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo2.getText());
                g.setGuestName(tfGuestName2.getText());
                g.setGuestPhoneNo(tfPhoneNo2.getText());
                g.setSelectedRoomNum(comboBox3.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo3.getText());
                g.setGuestName(tfGuestName3.getText());
                g.setGuestPhoneNo(tfPhoneNo3.getText());
                g.setSelectedRoomNum(comboBox4.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo4.getText());
                g.setGuestName(tfGuestName4.getText());
                g.setGuestPhoneNo(tfPhoneNo4.getText());
                g.setSelectedRoomNum(comboBox5.getSelectedItem().toString());
                g.setGuestPassportNo(tfPassportNo5.getText());
                g.setGuestName(tfGuestName5.getText());
                g.setGuestPhoneNo(tfPhoneNo5.getText());
                }
            }

Entity class - Guest.java 实体类-Guest.java

public boolean createGuestRecord(Guest g){
        boolean success = false;
        DBController db = new DBController();
        String dbQuery;

    //step 1 - establish connection to database
        try{
        db.getConnection();     

        dbQuery = "INSERT INTO guest(selectedRoomNum,guestPassportNo,guestName,guestPhoneNo,passNo)";
          dbQuery = dbQuery + " VALUES ('" + selectedRoomNum + "','" + guestPassportNo+ "','" + guestName + "','" + guestPhoneNo + "','" + passNo + "')";




        //step 3 - to insert record using updateRequest method
            if (db.updateRequest(dbQuery) == 1){ //record inserted
                success = true;
            }
        }

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

        //step 4 - close connection
        db.terminate();

        return success;


    }

Of course you have only the last record. 当然,您只有最后一条记录。 Just look at your code: 只需看一下您的代码即可:

            g.setSelectedRoomNum(comboBox1.getSelectedItem().toString());
            g.setGuestPassportNo(tfPassportNo1.getText());
            g.setGuestName(tfGuestName1.getText());
            g.setGuestPhoneNo(tfPhoneNo1.getText());

            // >>>>>>>>> Nothing here <<<<<<<<<

            g.setSelectedRoomNum(comboBox2.getSelectedItem().toString());
            g.setGuestPassportNo(tfPassportNo2.getText());
            g.setGuestName(tfGuestName2.getText());
            g.setGuestPhoneNo(tfPhoneNo2.getText());

After all these assignments g has the data for row 2, row 1 data disappeared. 在所有这些分配g中都有行2的数据后,行1的数据消失了。 So when the inserting starts g has the data from the last record only. 因此,当插入开始时,g仅具有来自最后一条记录的数据。 Insert the rows after you assign the fields to g. 将字段分配给g后,插入行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM