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...
- 毎回すべてを変更するだけです(非常に単純ですが、うまくいかないのではないかと思います)。
誰かがこれを行う賢い方法を持っていますか?