Java 无法在android studio中的sqlite数据库中添加其他表
我在Java 无法在android studio中的sqlite数据库中添加其他表,java,android,sqlite,Java,Android,Sqlite,我在应用程序中创建了几个表,所有表都运行良好。之后,我试图用同样的方法再添加一个表,但它总是给出以下错误 android.database.sqlite.SQLiteException:没有这样的表:patients\u record(代码1):,编译时:SELECT*FROM patients\u record 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)上 位于android.app.A
应用程序
中创建了几个表,所有表都运行良好。之后,我试图用同样的方法再添加一个表,但它总是给出以下错误
android.database.sqlite.SQLiteException:没有这样的表:patients\u record(代码1):,编译时:SELECT*FROM patients\u 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)
这是表的查询
我将字符串添加到
数据库的处理程序的onCreate()
,以及以前创建的其他表。最常见的原因是对onCreate
方法何时自动运行的误解。SQLite的新手通常假设每次实例化SQLiteOpenHelper子类(通常称为DatabaseHelper)的实例时它都会运行
但是,onCreate
仅在创建数据库时自动调用。因此,在开发应用程序时,一个简单的修复方法就是删除数据库。当应用程序下次运行时,将调用onCreate
方法并创建修改后的结构
- 删除应用程序的数据将删除数据库,因为它是应用程序数据的一部分
- 卸载应用程序也将删除应用程序的数据
- 通常,“onUpgrade”方法将包含删除表的代码,然后调用
onCreate
方法。当数据库版本增加时,将调用onUpgrade
方法
请注意,使用上述3种方法中的任何一种都会导致某些数据丢失。我也遇到过在现有表中添加新列的相同情况,我通过更改数据库版本号变量解决了此问题,只需增加DB版本并重新构建项目,然后重试
原因:当您第一次创建表时,sqlite会调用onCreate
方法,此后它不会再调用它,直到您调用onUpgrade
方法,因此,要在数据库中进行更改,只需增加数据库版本即可。
这将校准onUpgrade
方法。卸载应用程序并重新安装增加数据库版本。共享数据库处理程序class@RonakThakkarUninstall app
不是一个好方法。增加数据库版本对meThis方法有效取决于onUpgrade
方法正在相应地实现。只有当知道onUpgrade
方法将执行必要的操作时,才建议使用此方法。由于问题没有显示出onUpgrade
方法,因此不可能说增加数据库版本无疑会起作用。好吧,但假设他已经实现了onUpgrade,并在删除现有的表之后在其中创建了新的表
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 );";