안드로이드 개발 질문/답변
(글 수 45,052)
항상 도움받고 있는 것에 대해 매우 감사드리며 질문드립니다.
어떤 리스트에서 항목을 선택하면 그 항목의 정보를 데이터베이스 테이블에 추가하려고 합니다.
추가는 현재 잘되는 상태입니다.
추가하는 항목의 정보중에 UNIQUE한 Column에 들어가는 정보가 중복되면
06-21 07:15:15.823: ERROR/Database(2728): Error inserting 뿅뿅뿅뿅
06-21 07:15:15.823: ERROR/Database(2728): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
와 같은 에러가 발생함을 발견했습니다. 하지만 어플은 강제로 닫힘 없이 잘 돌아갑니다.
SQLiteConstraintException을 catch해서 사용자에게 그 항목이 이미 데이터베이스에 추가 되어 있음을 알려주는 메세지를 보여주고자 다음과 같은 구문을 작성했습니다.
========================================================================================================
=========================================================================================================
addPerson이라는 함수는 데이터 베이스에 정보를 추가하는 함수입니다.
그런데 LogCat에는
SQLiteConstraintException이 뜨는데
catch문으로 들어가질 않습니다. (toast도 뜨지 않으며 debug메세지(22 22) 또한 Logcat에 뜨지 않습니다.)
SQLiteConstraintException이 안잡히는 이유나 확실하게 잡는 방법 또는
database에서 unique column의 중복되는 항목이 있을경우 다른 조치를 취할 수 있는 방법을 알려주시면 감사하겠습니다.
매번 답변에 너무 감사드립니다.
어떤 리스트에서 항목을 선택하면 그 항목의 정보를 데이터베이스 테이블에 추가하려고 합니다.
추가는 현재 잘되는 상태입니다.
추가하는 항목의 정보중에 UNIQUE한 Column에 들어가는 정보가 중복되면
06-21 07:15:15.823: ERROR/Database(2728): Error inserting 뿅뿅뿅뿅
06-21 07:15:15.823: ERROR/Database(2728): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
와 같은 에러가 발생함을 발견했습니다. 하지만 어플은 강제로 닫힘 없이 잘 돌아갑니다.
SQLiteConstraintException을 catch해서 사용자에게 그 항목이 이미 데이터베이스에 추가 되어 있음을 알려주는 메세지를 보여주고자 다음과 같은 구문을 작성했습니다.
========================================================================================================
addPerson이라는 함수는 데이터 베이스에 정보를 추가하는 함수입니다.
그런데 LogCat에는
SQLiteConstraintException이 뜨는데
catch문으로 들어가질 않습니다. (toast도 뜨지 않으며 debug메세지(22 22) 또한 Logcat에 뜨지 않습니다.)
SQLiteConstraintException이 안잡히는 이유나 확실하게 잡는 방법 또는
database에서 unique column의 중복되는 항목이 있을경우 다른 조치를 취할 수 있는 방법을 알려주시면 감사하겠습니다.
매번 답변에 너무 감사드립니다.
2010.06.25 14:38:46
UNIQUE로 지정한 column에 같은 중복되는 값이 들어올 경우에 insert가 안되도록 하기 위해서 정했구요
중복된 값을 insert하려는 경우, 사용자에게 중복된 값이 있다고 알려주고 싶은 것입니다. 그래서 보니까 그 경우, exception이 발생하던데, 프로그램 자체는 강제로 종료되지 않고 exception이 발생한채로 계속 진행되는 것을 봤습니다.
그래서 그 exception을 잡아서 사용자에게 알려주면 되겠다고 생각했는데 잡히질 않는군요.
질문의 요지는 exception이 외 안잡히는지.. 잡을 수 있는 방법이 없을지에 대해 질문한 것입니다.
중복된 값을 insert하려는 경우, 사용자에게 중복된 값이 있다고 알려주고 싶은 것입니다. 그래서 보니까 그 경우, exception이 발생하던데, 프로그램 자체는 강제로 종료되지 않고 exception이 발생한채로 계속 진행되는 것을 봤습니다.
그래서 그 exception을 잡아서 사용자에게 알려주면 되겠다고 생각했는데 잡히질 않는군요.
질문의 요지는 exception이 외 안잡히는지.. 잡을 수 있는 방법이 없을지에 대해 질문한 것입니다.




내부에서 로그를 보여주는 부분도 있습니다.
UNIQUE 에 대해서는.. 프로그래머가 정의한 부분이니
로직을 짤때 잘 안겹치게 해야죠 머.. -_-;