java - 如何在android studio上创建一个新表到数据库中?
问题描述
我正在使用sqlite数据库开发一个android项目,在创建数据库后我意识到我需要一个新表,所以我尝试将它添加到我的SQLiteOpenHelper类中
BaseDeDatos.execSQL("create table viaje(id_viaje integer primary key, tiempo integer, revs integer, esfzosub integer, esfzobaj integer)");
但是当我运行应用程序并按下按钮时,我的应用程序崩溃并给了我以下消息:
android.database.sqlite.SQLiteException: no such column: sfzosub (code 1): , while compile: UPDATE viaje SET sfzosub=?,sfzobaj=?,id_viaje=?,id_categoria=? WHERE codigo=1
我看到问题是数据库上的更改不是我尝试重新启动android studio,重建应用程序,但我仍然有同样的问题,我该如何更改我的数据库?
解决方案
现在最大的问题是您将新表的创建称为何处?如果你这样做
public void onCreate(SQLiteDatabase db)
您的代码不会被执行,因为数据库已经存在!
要正确处理,请将其添加到
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(YOUR_STRING);
然后将数据库的版本更改为更高的数字。当您重新启动应用程序时,它将看到一个新版本并运行onUpgrade
.
推荐阅读
- tsql - ANDALSO 选项,当一个失败时停止评估
- amazon-s3 - S3 生命周期策略需要多长时间才能应用于存储桶中的旧对象?
- c# - WPF - 其他启动窗口
- c# - 如何通过 ARM 模板将 Azure 函数注册到 API 管理器?
- python - GRU(return_sequences = True)层之后的TimeDistributed Dense Layer导致尺寸错误
- javascript - 如何确定 Express 应用与 MongoDB 的连接是否真的打开?
- c# - 单元测试 MassTransit 时未调用消费者
- django - celery beat 使用 celery-django 不工作
- javascript - 我正在尝试实现 BST 的删除方法,但我无法找出问题所在
- docker - 以 root 用户身份启动容器后运行 Dockerfile 中配置的脚本