当前位置: 首页 > 工具软件 > ActiveAndroid > 使用案例 >

android 表增加字段,如何在添加新列后使用activeandroid更新表

邰宇
2023-12-01

谢谢你的阅读和帮助:)

我正在使用ActiveAndroid 3.0 – Android 2.2 – 在我的应用程序中,我有一个名为“用户”的模型。 最初我只创建了具有(id,name,passcode)列/属性的模型,我在模拟器上运行了应用程序,并且它工作正常。@Table(name = "user") public class User extends Model { @Column (name = "name") public String name; @Column (name = "pass_code") public String passCode; }

然后我添加了一个新的列/属性 – profileImage。 我在模拟器上运行应用程序,我得到SQLite列profileImage不存在错误。

@Table(name = "user") public class User extends Model { @Column (name = "name") public String name; @Column (name = "pass_code") public String passCode; @Column (name = "profile_image") public String profileImage; }

我尝试更改ActiveAndroid数据库名称并更新清单文件中的数据库版本属性。

但我不断得到列不存在错误。

ERROR AndroidRuntime Caused by: android.database.sqlite.SQLiteException: no such column: profile_image: , while compiling: SELECT * FROM user WHERE profile_image = ?

我也试过,从模拟器中卸载应用程序,重新启动模拟器,调用ActiveAndroid.cacheClear()。 到目前为止,这些都没有奏效。

我非常感谢任何帮助。 谢谢。

从它的声音来看,您缺少升级脚本以将user表迁移到新架构。 升级脚本基本上包含有关如何从数据库的旧状态到新数据库的说明。 在您的特定情况下,您将要告诉SQLite它应该向现有用户表添加新列profile_image 。

要将数据库从模式1升级到2,请将AA_DB_VERSION值提升为2 ,并将升级脚本命名为2.sql 。 将文件保存在assets/migrations并为其提供以下内容:

ALTER TABLE user ADD profile_image TEXT;

脚本可以包含可由SQLiteDatabase通过execSQL(...)执行的任何SQL语句集。

有关使用Active Android进行架构迁移的更多详细信息,请参阅GitHub项目页面上的wiki 。

使用ActiveAndroid将“ TEXT ”标签更改为“ VARCHAR ”以进行数据库迁移

除“ TEXT ”外,所有其他保留字都被突出显示。 我使用“ VARCHAR ”并且它有效。

 类似资料: