1

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...
  • 毎回すべてを変更するだけです(非常に単純ですが、うまくいかないのではないかと思います)。

誰かがこれを行う賢い方法を持っていますか?

4

1 に答える 1