2017-07-20 12 views
0
try { 
    db.insertOrThrow("savedreports", null, cv); 
} catch (SQLException e) { 
    Log.e(TAG, e.getMessage(), e); 
} 

上記のコードで重複レコード(同じ主キーとフィールドの値も)を挿入しようとすると、どのようなエラーメッセージが表示されますか?SQLiteConstraintException重大な主キーを挿入するためのエラーメッセージ

または または を "UNIQUE制約が失敗しました" "PRIMARY KEYは一意である必要があります" ???

私のプログラムは、サーバーからいくつかのレコードを取得し、それらのレコードを削除するようサーバーに通知します。しかし、時には、接続の不一致によりレコードを削除するHTTPリクエストが失敗することがあります。したがって、最新のレコードを再度リクエストすると、同じレコードが取得されます。

私は現在insertOrThrowを使用してこれらのレコードを挿入していますので、重複レコードが発生した場合は、レコードが重複しているため正確に例外が発生していることを知りたいと思います(NULLカラム制約、データベース接続クローズなどによるものではありません)。

答えて

0

これらの制約は、実行時エラーではなくプログラミングエラーを検出するように設計されています。したがって、保証されたエラーメッセージはありません。

鍵が重複していないことを確認する場合は、自分で確認する必要があります。 これが唯一の制約である場合は、代わりにINSERTまたはIGNOREすることができます(AndroidではinsertWithOnConflict())。