Итак, у меня есть метод, который вставляет адресные данные в базу данных.
public Address(String street_name, Integer evidenceNumber, Integer describingNumber, Integer PSC, String city, String state) {
this.streetName = new SimpleStringProperty(street_name);
this.evidenceNumber = new SimpleIntegerProperty(evidenceNumber);
this.describingNumber = new SimpleIntegerProperty(describingNumber);
this.postcode = new SimpleIntegerProperty(PSC);
this.city = new SimpleStringProperty(city);
this.state = new SimpleStringProperty(state);
}
....
public boolean addAddress() throws SQLException {
int controlDuplicate = -1;
controlDuplicate = findAddress();
if (controlDuplicate != -1) {
return false;
}
if (this.describingNumber.get() < 0 || this.evidenceNumber.get() < 0 || "".equals(this.city.get()) || "".equals(this.state.get()) || this.postcode.get() < 0) {
return false;
}
//connector.getConn().setAutoCommit(false);
String addAddress = "INSERT INTO address(street_name, evidence_number, describing_number, postcodes, city, country)"
+ "VALUES('" + this.streetName.get() + "', " + this.evidenceNumber.get() + ", " + this.describingNumber.get() + ", " + this.postcode.get() + ", '" + this.city.get() + "', '" + this.state.get() + "')";
Statement st = connector.getConn().createStatement();
try {
st.executeUpdate(addAddress);
} catch (PSQLException ex) {
System.err.println("Insert Address execution unsuccessful!");
Logger.getLogger(Address.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
st.close();
return true;
}
Все работало нормально, пока вдруг, когда я попытался сделать это снова, вывод был:
org.postgresql.util.PSQLException: ОШИБКА: нулевое значение в столбце "id" нарушает ненулевое ограничение
Кто-нибудь знает, где может быть проблема? И прежде чем кто-либо спросит, «id» устанавливается как Serial Primary Key, и до недавнего времени с этим методом не было проблем.
РЕДАКТИРОВАТЬ: Кроме того, кажется, что все данные из всех объектов БД внезапно теряются. Это случилось с кем-нибудь?