2016-08-26 37 views
0

我正在尝试开发我的应用程序,以便它使用数据库存储有关书籍的数据。 我的Android和SQLite的知识很少,所以我的代码看起来很尴尬。当我尝试运行应用程序,时出现错误,指出表未找到SQLite Android

造成的:android.database.sqlite.SQLiteException:没有这样的表: Library_Table(代码1):在编译:选择_id,BOOK_TITLE, 作者,长度,Chapters_Read,DATE_ADDED FROM Library_Table ORDER BY DATE_ADDED DESC

我相信,当我打电话命令来查询数据库的问题出现;我肯定有些事情我做得不对,但在尝试调试几周后,我即将放弃。我将添加我认为对于这个问题非常重要的几段代码。

相信这第一部分创建表(它发生在其延伸的sqliteopenhelper类):

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 (线光标的光标=数据库的类。

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"); 

这是常量类(在一个单独的文件)::

;查询由机器人工作室作为有问题的)反白标明
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