当前位置: 首页 > 知识库问答 >
问题:

将整数值添加到数据库表中错误

林冥夜
2023-03-14

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

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个答案

竺展
2023-03-14

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

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

public void addFlightDetail(String flightNumber, int seats){

  addFlightName = getConnection().prepareStatement("insert into flight (name, seats)
  values(?,?)");
  addFlightName.setString(1, flightNumber);
  addFlightName.setInt(1, seats);
}
 类似资料:
  • 我是< code>sqlite数据库的新手,在我的项目中,我需要在创建数据库后添加数据。我尝试了这种方式,这是我的代码。 公共类主要活动扩展活动 { } 我创建了另一个类来打开sqlite数据库。 公共类MySqlHelper扩展SQLiteOpenHelper{ 公共字符串getBird(int id){ 它给我异常 帮助我避免这种情况,并在创建数据库后立即插入数据。

  • 线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:类net.ucanAccess.jdbc.UCANAccessSpreparedStatement无法强制转换为类com.mysql.jdbc.PreparedStatement(net.ucanAccess.jdbc.UCANAccessSpreparedStatement和com.mysq

  • 我在生产中有一个基于Hibernate的应用程序,有一个大型数据库。我需要在这个应用程序中向两个实体(两个表)添加审计,我决定使用Envers。 对于每次插入、更新或删除,Envers都会向实体的审核表中添加一条新记录。 如果从应用程序一开始就支持Envers,那么审计表将在实体创建(INSERT)时填充。 Envers留档非常薄,没有提到任何关于将Envers添加到现有应用程序的内容。 如果我简

  • 我有一个很愚蠢的问题。当我们向ArrayList添加一个int值时,它会创建该int值的新整数对象吗?例如: 在上面的代码中,“a”是一个值为1的原始类型,“list”是一个包含整数类型元素的数组列表。那么在“列表”中添加“a”时,“列表”如何将“a”视为整数?

  • 很容易将列表列表转换为数据帧: 但是我如何将df转换回列表列表呢?

  • 问题内容: 我正在显示此示例产品表。我需要在不使用结果集的情况下将所有表日期合并到一个jsp中。我尝试完成这一部分: 我需要将所有表数据添加到列表或?? 并使用方法将其退回我该怎么办? 问题答案: 使您的方法返回a 而不是单个。 然后,在您的JSP文件中,迭代返回的列表: