ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [해결]android no such table (table name) 에러
    카테고리 없음 2021. 10. 26. 15:52

    필자네 회사에선 SQLiteOpenHelper 를 상속받아 db를 핸드폰에 백업하고 복구를 한다.

    이전 db엔 각각 다른 4개의 테이블이 존재 했고 이번에 같은 db에 또 다른 1개의 테이블을 추가를 하고 싶었다.

    그러나 SQLiteOpenHelper 안에 onCreate 메소드는 처음 어플 설치 시 호출이 된다.

    그런 기본 개념을 몰랐던 필자는 해당 onCreate에 추가하고자 하는 테이블의 쿼리를 넣었고,

    기존에 있던 다른 테이블들과 동일하게 만들어 주었으나 계속해서 나는 no such table에러...

    자꾸 내 테이블 이름을 찾을 수 없다는 말만 주고 강제종료,,,

    그러다 일단 어플을 삭제 후 (데이터삭제하고) 다시 설치 해 보라는 실장님 말씀에 그렇게 하니

    정상적으로 작동이 됐다.

    하지만 기존에 있던 테이블의 데이터는 사용 할 수 없는... 암울한...

    그래서 기존 테이블도 보존하고 새로운 테이블도 넣는 방법을 찾아보았다.

     

    우선 SQLiteOpenHelper 의 onCreate 메소드를 호출하고자 할 경우

    getWritableDatabase() getReadableDatabase()로 접근하여 onCreate를 호출 할 수 있다.

    하지만 필자는 그냥 다이렉트로 SQLiteOpenHelper 상속하는 클레스를 다이렉트로 호출하여onCreate를 호출했다.그리고 쿼리도 기존엔 그냥 CREATE TABLE TABELNAME 이였지만 이 후에 어플을 업데이트 하는기존 고객들도 계셔서 CREATE TABLE IF NOT EXISTS TABLENAME 이렇게 쿼리를 바꾸었다.쿼리를 이렇게 할 경우엔 TABLENAME 이라는 테이블이 없을 경우에만 테이블을 추가 하기 때문에이렇게 진행하였다.

     

    다른 방법으론 데이터를 다른 테스트 db를 만들어 보관 후 새로 사용 할 db를 생성하여테이블을 만들어 테스트 db에 있는 데이터를 옮기는 방법도 있으나머리가 좋지 않은 필자는... 가장 간단한 방법으로..!!그래도 오늘은 해결 되서 너무 좋다^^..

     

    아래는 필자가 참고한 tistory이다.https://huammmm1.tistory.com/466

     

    android sqlite no such table

    요약 : SQLiteOpenHelper를 여러 개 사용하는 경우 같은 이름의 데이터베이스 파일을 사용하지 말 것. ----- 상황 : 내 어플리케이션에는 SQLiteOpenHelper를 상속받는 MessageDBHelper 클래스가 있었다. 이 클래.

    huammmm1.tistory.com

     

     

     

     

Designed by Tistory.