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 楼答案
看起来您使用了错误的表来添加座位,或者使用了错误的表索引
编辑: 检查表列后,需要为这两个函数添加这样的查询,但建议只使用这样一种方法: