在Active Android中升级数据库版本

时间:2015-07-08 05:38:51

标签: android android-sqlite activeandroid

我有以下情况: 我的应用程序以数据库版本2发布给客户。 我修复了一些错误并在我的数据库中添加了更多功能。这也改变了我的模型以及数据库改变的原因。 如何在Android studio中提供迁移脚本,我看到了为eclipse添加迁移脚本的建议。但我没有为android studio找到任何解决方案。

详细说明

我按照维基说明操作: https://github.com/pardom/ActiveAndroid/wiki/Schema-migrations 并尝试将列添加到每个现有的数据库表,但这不起作用。

我的初始enter code here模型类

@Table(name = "Person")
public class Person extends Model 
{
@Column
private String name;
}

一切都很好。 然后我添加了一个名为age的新字段:

@Table(name = "Person")
public class Person extends Model 
{
@Column
private String name;
@Column
private int age;
}

并更改了清单标志+创建了所需的资产/迁移/ 2.sql脚本

ALTER TABLE Person ADD COLUMN age INTEGER;

我必须在AndroidStudio环境中提供此迁移脚本。 有线索吗?

我还在Manifest文件中更新数据库版本。我仍然得到以下异常

android.database.sqlite.SQLiteException: no such table: Tablename (code 1): , while compiling: SELECT * FROM TableName
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:891)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:502)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
at com.activeandroid.Model.rawQuery(Model.java:349)
at com.activeandroid.Model.rawQuerySingle(Model.java:369)
at com.activeandroid.query.From.executeSingle(From.java:159)
at com.eshopmanager.shopmanager10.MainActivity$1.run(MainActivity.java:127)
at java.util.Timer$TimerImpl.run(Timer.java:284) 

1 个答案:

答案 0 :(得分:2)

我通过在main中创建assets文件夹解决了这个问题。之后我创建了迁移。放在那里的sql文件。 这样我的数据库就会改变效果。