5

私は次のようなクエリを持っています...

    INSERT INTO MYTABLE (f1,f2,f3,f4) VALUES (1,2,3,4) ON DUPLICATE KEY UPDATE f4=5;

私が達成したことは、

次のように接続、ステートメントを作成し、クエリを実行します

    statement.execute(query);

しかし、コードが INSERT または UPDATE を実行したかどうかを確認する必要があります。

誰でもこれで私を助けることができますか??

前もって感謝します...

4

2 に答える 2

2

代わりに 2 つのステートメントを使用できます:executeUpdate影響を受けた行数を返します。その数が 0 の場合は、挿入を実行する必要があります。

于 2013-03-18T12:04:51.390 に答える
1

特定の組み込み関数や回避策を知りません。

しかし、私の場合、私はこのように簡単な方法でそれを可能にしたでしょう

select count(*) as oldcount from MYTABLE;

このレベルでクエリを実行します

INSERT INTO MYTABLE (f1,f2,f3,f4) VALUES (1,2,3,4) ON DUPLICATE KEY UPDATE f4=5;

select count(*) as newCount from MYTABLE;

retrive OLDCOUNT and NEW COUNT

if(oldcount != new count)
{
  //InsertPerformed
}

else
{
  //updateperformed
}
于 2013-03-18T12:18:27.950 に答える