无法在android studio中的sqlite数据库中添加另一个表

时间:2017-12-06 05:56:41

标签: java android sqlite

我在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

2 个答案:

答案 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种方法中的任何一种都会导致某些数据丢失。