我希望能够更新 oracle 数据库中表中行的部分内容。该数据库有一个数字(这是主键)和 5 个其他列。
该方法获取一个对象并将其与数据库中具有相同主键的对象进行比较。然后它应该比较列并更改已更改的列。我想到了几种不同的方法来做到这一点:
- 对每一个可能的变化排列进行检查(这样做的方法很长)。
例如:
public boolean updateOrder(Order o, Connection con) {
int rowUpdated = 0;
String SQLString = "";
Order origOrder = getOrder(o.getOno(), con);
if (origOrder.getCustomerNo() != o.getCustomerNo()
&& origOrder.getEmployeeNo() == o.getEmployeeNo()
&& origOrder.getReceived().compareTo(o.getReceived()) == 0
&& origOrder.getBeginDate().compareTo(o.getBeginDate()) == 0
&& origOrder.getEndDate().compareTo(o.getEndDate()) == 0
&& origOrder.getProjectLocation().compareTo(o.getProjectLocation()) == 0) {
SQLString = "UPDATE ORDERS SET "
+ "CNO = " + o.getCustomerNo()
+ "where ONO = " + o.getOno();
}
PreparedStatement statement = null;
try {
//== insert value----- Unit of work start
con.setAutoCommit(false);
statement = con.prepareStatement(SQLString);
rowUpdated = statement.executeUpdate();
etc...
- 每次都改变一切(很简单,但我担心它可能会出错)。
有没有人有这样做的聪明方法?