【发布时间】:2025-12-06 04:20:03
【问题描述】:
所以,我有一个将地址数据插入数据库的方法。
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”被设置为串行主键,直到最近该方法没有问题。
编辑:最重要的是,似乎所有数据库实体的所有数据都突然丢失了。有人遇到过这种情况吗?
【问题讨论】:
-
表格丢失了列定义上的“序列”部分,即使用序列的
DEFAULT。再仔细看看数据库中的列定义,例如使用 pgAdmin。
标签: java database postgresql