Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在android studio中的sqlite数据库中添加其他表_Java_Android_Sqlite - Fatal编程技术网

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@RonakThakkar
Uninstall 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 );";