有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java向数据库表中添加整数值时出错

我正在用java创建一个航班应用程序,它应该做的一件事是向数据库中添加一个新航班。我可以在没有问题的情况下添加航班名称,但在将航班的座位数添加到数据库中时遇到问题。数据库表设置为以整数值形式接收座位数。在我的代码中,将这个值从用户界面添加到数据库的函数将一个值作为整型参数。然后,在添加新航班的实际按钮的事件处理程序代码中,我将字符串(文本框中接受为字符串)中的值转换为整数,以便将该值输入数据库。然而,当我运行我的代码时,我得到一个错误,说座位数不能被接受为空值。基本上,数据库接受的值为null。我不确定我在代码中做错了什么

public class Flight extends Customer {
        private static ArrayList<String> FlightNames;
        private static ArrayList<Integer> Seats;
        private static PreparedStatement getFlightnames;
        private static PreparedStatement getFlightSeats;
        private static PreparedStatement addFlightName;
        private static PreparedStatement addSeats;
        private static ResultSet fresult;
        private static ResultSet sresult;

        public static ArrayList <String> getFlightnames(){
            //recieve flight names from database
            try{
                FlightNames = new ArrayList();
                getFlightnames = getConnection().prepareStatement("select name from flight ");
                fresult = getFlightnames.executeQuery();
                while(fresult.next()){
                    FlightNames.add(fresult.getString(1));

                }

            }
            catch(SQLException result){
                result.printStackTrace();
            }
            return FlightNames;

        }
        public ArrayList<Integer> getFlightSeats(){
            try{
            Seats = new ArrayList();
            //getFlightSeats = getConnection().prepareStatement("SELECT * FROM Flight WHERE Seats LIKE ?");
            getFlightSeats = getConnection().prepareStatement("select seats from flight ");
            sresult = getFlightSeats.executeQuery();
                while(sresult.next()){
                    Seats.add(sresult.getInt(1));

                }
            }

            catch(SQLException result){
                result.printStackTrace();
            }
            return Seats;
        }
        public void addFlight(String flight){
            try{
                addFlightName = getConnection().prepareStatement("insert into bookings (flight) values(?)");
                addFlightName.setString(1, flight);
                addFlightName.executeUpdate();

            }
            catch(SQLException result){
                result.printStackTrace();
            }
        }
        public void addNumber(String flightNumber){
            try{
                addFlightName = getConnection().prepareStatement("insert into flight (name) values(?)");
                addFlightName.setString(1, flightNumber);
                addFlightName.executeUpdate();

            }
            catch(SQLException result){
                result.printStackTrace();
            }
        }
        public void addSeats(int seats){
            try{
                addSeats = getConnection().prepareStatement("insert into flight (seats) values(?)");
                addSeats.setInt(1, seats);
                addSeats.executeUpdate();

            }
            catch(SQLException result){
                result.printStackTrace();
            }
        }

}

private void AddFlightButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                
        Flight addnumber = new Flight();
        Flight addseats = new Flight();
        addnumber.getConnection();
        addseats.getConnection();
        String flight = FlightTextBox.getText();
        String seats = SeatsTextBox.getText();
        int seatsInt = Integer.parseInt(seats);
        addnumber.addNumber(flight);
        addseats.addSeats(seatsInt);

        AddFlightStatusLabel.setText("The flight " + flight + " has been added with " + seats + " seats" );
        BookFlightComboBox.setModel(new javax.swing.DefaultComboBoxModel(Flight.getFlightnames().toArray()));
        StatusFlightComboBox.setModel(new javax.swing.DefaultComboBoxModel(Flight.getFlightnames().toArray()));
        WaitFlightComboBox.setModel(new javax.swing.DefaultComboBoxModel(Flight.getFlightnames().toArray()));
    }

共 (1) 个答案

  1. # 1 楼答案

    看起来您使用了错误的表来添加座位,或者使用了错误的表索引

    编辑: 检查表列后,需要为这两个函数添加这样的查询,但建议只使用这样一种方法:

    public void addFlightDetail(String flightNumber, int seats){
    
      addFlightName = getConnection().prepareStatement("insert into flight (name, seats)
      values(?,?)");
      addFlightName.setString(1, flightNumber);
      addFlightName.setInt(1, seats);
    }