내 응용 프로그램은 복잡한 SQL 문을 사용하므로 자주 execsql을 자주 사용하는 습관을 겪었습니다. 심지어 간단한 것 (아래)에 대한 삽입 또는 업데이트와 같은 것을 사용해야 할 수도 있습니다. . 이것이 내가 분명히 실패 할 경우 데이터를이 시도했습니다안드로이드 Sqlite SQLiteAbortException 작동하지 않습니다
String query = "UPDATE OR ABORT " + myTable + " SET " + .... column names and values + WHERE ...
try {
db.execSQL(query);
} catch (SQLiteAbortException e) {
Log.i(TAG, "error in the update");
를 작동하지 않는 이유
그러나, 나는 궁금 오전 (즉, 일치하는 기록을 갱신 아니된다) 그러나 나는 캐치를 타격하고 있지 않다 . 처음에 나는 UPDATE 또는 FAIL과 SQLiteConstraintException을 사용했다하지만 적발되지 않았을 때 내가 특별히
SQLite는 프로그램이 중단 한 것을 나타내는 예외를 내용의 SQLiteAbortException을 시도했다. 이 은 트리거에서 ABORT를 호출하거나 ABORT 충돌 절을 사용하여 결과로 발생할 수 있습니다.
무엇이 여기에 있습니까?
업데이트 : INSERT/UPDATE 또는 ABORT/FAIL에서 참조 용으로 this을 추가하는 것입니다. SQLiteAbortException이 방법이 아니라면 어떻게 업데이트를 중단하거나 실패 할 수 있습니까?
'ABORT'는 제약 조건 위반의 경우에만 해결할 수 있다고 생각했습니다. 데이터가 업데이트되지 않으면 중단 할 위반 사항도 없습니다.제약 조건을 위반하는 업데이트 문을 사용해 볼 수 있습니까 (예 : 기존의 다른 키 값으로 기본 키 값을 업데이트하는 경우)? – tiguchi
@ Nobu SQliteAbortException이 예상대로 작동하지 않습니다. 그래서 비 고유 키로 인해 위반이 발생할 것이라는 것을 알았던 곳에 업데이트 대신 INSERT를 시도했습니다. 효과가 없습니다. 그러나 SQLiteConstraintException로 변경하면 오류가 발생합니다. 두 경우 모두 UPDATE를 사용하면 제약 조건 위반 오류는 기대하지 않지만 오류는 발생하지 않습니다. – TrustNoOne