2013-02-23 43 views
2

我只是试图使用ActiveAndroid。在here的教程之后,我设置了一切。 我添加清单项:ActiveAndroid - 没有字段创建

应用软件Android:NAME = “com.activeandroid.app.Application” ......

meta-data android:name="AA_DB_NAME" android:value="MyDb.db" 
meta-data android:name="AA_DB_VERSION" android:value="1" 

,创造我的模型类:

package com.mycomp.Model; 

import org.joda.time.LocalDate; 
import org.odata4j.core.Guid; 

import com.activeandroid.Model; 
import com.activeandroid.annotation.Column; 
import com.activeandroid.annotation.Table; 

@Table(name = "Table1") 
public class Table1 extends Model 
{ 
    @Column(name = "Custom_ID") 
    public Guid Custom_ID; 
    @Column(name = "Name") 
    public String Name; 
    @Column(name = "Usr_type") 
    public int Usr_type; 
    @Column(name = "BDate") 
    public LocalDate BDate; 

    public MyEnum UserGroup; 

    public Table1() 
    { 
    super(); 
    } 

    public Table1(String name, LocalDate date, Guid custom_id, 
     MyEnum userGroup) 
    { 
    super(); 
    Name = name; 
    BDate = date; 
    Custom_ID = custom_id; 
    UserGroup = userGroup; 
    } 

} 

之后,我使用了保存方法(据称可以创建底层数据库结构):

Table1 t1=new Table1(); 
t1.Name="Test"; 
t1.UserGroup = MyEnum.G1; 
t1.save(); 

它抛出一个异常: 表table1没有名为名称

我使用SQLite浏览器检查它列。该表存在但只包含一个字段: Id。我还应该做些什么来创建其他领域?

+0

我很困惑:我添加了一个简单的String属性的Test类。我创建了一个实例,并调用_save_。它抛出了一个例外:**没有这样的表格:测试**我相信,该模型会使底层系统创建它。你能告诉我,ActiveAndroid的工作原理吗?是不是缺少表创建funcion? – Nestor 2013-02-23 20:03:32

回答

8

还有另一种解决方案:改变AA_DB_VERSION元数据值并把修改脚本以资产/迁移文件夹,以便ActiveAndroid将使用升级功能。当数据库中已经存在数据时它便于使用。

来源:https://github.com/pardom/ActiveAndroid/wiki/Schema-migrations

+0

感谢您的回答。但是当我尝试这个时,我得到了下面的例外。任何想法为什么? 'android.database.sqlite.SQLiteException:不是错误(代码0)' – hannanessay 2014-04-28 07:31:39

+1

不知道,但如果你有源代码,你可以调试抛出异常的位置。我也建议写在项目的问题跟踪器:https://github.com/pardom/ActiveAndroid/issues – Nestor 2014-04-28 07:35:42

+0

错误是从我的应用程序类,我正在初始化我的ActiveAndroid抛出。感谢您的帮助,我将在github上发布一个问题。 – hannanessay 2014-04-28 07:52:01

10

好了,我相信,它应该重要的在他们的教程,ActiveAndroid创建于第一运行数据库结构共享。如果你改变你的模型,它不会同步它。 解决方案:删除数据库文件从您的手机/模拟器,并在下一次运行,它的工作原理。

+1

同意这是重要的东西 – rmirabelle 2013-03-07 18:38:06

+2

你应该在答案中编辑该教程(https://github.com/pardom/ActiveAndroid/wiki/Getting-started),以便其他人不会遇到同样的问题。 – iwasrobbed 2013-05-21 21:46:21

+0

接受此答复/ – 2014-08-26 10:25:19

1

这可能是因为你因此创建数据库activeandroid无法识别表的列后进行了更改的类。您可以卸载APK,也可以清除应用程序的缓存数据。

+0

检查接受的答案。这是推荐的解决方案。 – Nestor 2014-02-17 22:02:15