我在application
中创建了几个表格并且都运行良好。之后,我试图用相同的方法添加一个表,但它总是给出以下错误
android.database.sqlite.SQLiteException:没有这样的表:patients_record(代码1):,同时编译:SELECT * FROM patients_record 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 在android.app.ActivityThread.-wrap12(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1460) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:154) 这是表格的查询。
private static final String PATIENT_TABLE_CREATE = "create table if not exists patients_record( patientId text primary key not null, "
+ "patientFirstName text not null, patientLastName text not null, patientDepartment text not null, patientDoctorId text not null, patientRoom text not null );";
我将onCreate()
处理程序的Database
字符串添加到之前创建的其他tables
。
答案 0 :(得分:2)
我也遇到了在我现有表中添加新列的情况,我通过更改数据库版本号变量解决了这个问题,只需增加数据库版本并再次构建项目并尝试。
原因:当您第一次创建表格时,sqlite会调用onCreate
方法之后再调用onUpgrade
方法之后再调用它,以便在您内部进行更改数据库increase your DB version
只会onUpgrade
方法。
答案 1 :(得分:0)
最常见的原因是对onCreate
方法何时自动运行的误解。 SQLite的新手经常假设每次实例化SQLiteOpenHelper子类的实例(通常称为DatabaseHelper)时它都会运行。
但是,onCreate
仅在创建数据库时自动调用。这样一个简单的修复,在开发App时,就是删除数据库。当App下次运行时,将调用onCreate
方法并创建修改后的结构。
删除应用程序的数据将删除数据库,因为它是应用程序数据的一部分。
卸载应用程序也会删除应用程序的数据。
通常' onUpgrade'方法将包含DROPS表的代码,然后调用onCreate
方法。当数据库版本增加时,将调用onUpgrade
方法。
请注意,使用上述3种方法中的任何一种都会导致某些数据丢失。