2016-08-26 5 views
0

데이터베이스를 사용하여 책에 대한 데이터를 저장하도록 앱을 개발하고 있습니다. 내 안드로이드에 대한 지식과 SQLite은 기껏해야 부족하기 때문에 내 코드가 매우 어색해 보일 수 있습니다. android.database.sqlite.SQLiteException : 나는 응용 프로그램을 실행하려고하면 오류가테이블을 찾을 수 없습니다. SQLite Android

에 의해 발생한다는하지 발생 그러한 테이블 : Library_Table (코드 1) : 컴파일하는 동안 : _id를 선택 BOOK_TITLE, 을 저자, 길이, Chapters_Read, Library_Table ORDER FROM DATE_ADDED BY DATE_ADDED DESC

나는 데이터베이스를 조회하는 명령을 호출 할 때 문제가 발생 믿는다 내가 옳지 않은 일이 있다고 확신하지만 몇 주 동안 디버깅을 시도한 후에 나는 포기할 것입니다. 문제의 중요한 부분 인 코드의 일부를 추가하겠습니다.

public void onCreate(SQLiteDatabase sqLiteDatabase) { 
    String CREATE_LIBRARY_TABLE = "CREATE TABLE " + Constants.TABLE_NAME 
     + "(" 
     + Constants.KEY_ID + " INTEGER PRIMARY KEY," 
     + Constants.TITLE_NAME + " TEXT," 
     + Constants.BOOK_AUTHOR + " TEXT," 
     + Constants.BOOK_LENGTH + " INTEGER," 
     + Constants.CHAPTERS_READ + " INTEGER," 
     + Constants.DATE_ADDED + " TEXT" 
     + ");"; 
    sqLiteDatabase.execSQL(CREATE_LIBRARY_TABLE); 
} 

이 다음 부분은 SQLitesOpenHelper (라인 커서 커서 = 데이터베이스를 확장하는 클래스를 발생

나는이 첫 번째 부분 (그것은 sqliteopenhelper를 확장하는 클래스에서 발생) 테이블을 만들어 믿습니다.

:

public ArrayList<Book> getBooks(){ 
    String selectQuery = "SELECT * FROM " + Constants.TABLE_NAME; 
    SQLiteDatabase database = this.getReadableDatabase(); 

    Cursor cursor = database.query(
      Constants.TABLE_NAME, 
      new String[]{ 
      Constants.KEY_ID, 
      Constants.TITLE_NAME, 
      Constants.BOOK_AUTHOR, 
      Constants.BOOK_LENGTH, 
      Constants.CHAPTERS_READ, 
      Constants.DATE_ADDED}, 
      null, null, null, null, 
      Constants.DATE_ADDED + " DESC"); 

이 별도의 파일에서 상수 클래스는()이다 :, 쿼리 등의 문제가 안드로이드 스튜디오)에 의해 highlited한다

public class Constants { 
    public static final String DATABASE_NAME = "LibraryDB"; 
    public static final int DATABASE_VERSION = 1; 
    public static final String TABLE_NAME = "Library_Table"; 
    public static final String KEY_ID = "_id"; 
    public static final String TITLE_NAME = "Book_Title"; 
    public static final String BOOK_AUTHOR = "Author"; 
    public static final String BOOK_LENGTH = "Length"; 
    public final static String CHAPTERS_READ = "Chapters_Read"; 
    public static final String DATE_ADDED = "Date_Added"; 
} 

실제 문제는이 주제에 대해 잘 모르는 것이라고 생각합니다. 해결할 큰 문제가 아닌 것 같습니다.

답변

0

기기에 설치된 앱에 이미 SQLite 데이터베이스가 설정되어있는 경우 SQLiteOpenHelper#onCreate이 호출되지 않습니다.

이것은 일반적으로 앱의 한 버전에서 다른 버전으로 데이터베이스 이전을 사용하여 해결되는 문제입니다.

이전 버전의 앱을 업데이트하지 않으려면 현재 버전을 제거한 다음 앱을 다시 휴대 전화로 밀어 넣으세요. 이전 버전을 업데이트하는 경우 SQLiteOpenHelper#onUpgrade을 사용하여 데이터베이스를 마이그레이션해야합니다.

자세한 정보 here.

관련 문제