2

ActiveAndroid を使用しようとしました。hereからのチュートリアルに従って、すべてを設定しました。マニフェスト エントリを追加しました。

アプリケーション 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;
  }

}

その後、save メソッドを使用しました (基になるデータベース構造を作成すると言われています)。

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

例外がスローされました: テーブル Table1 には Name という名前の列がありません

SQLiteブラウザで確認しました。テーブルは存在しますが、含まれるフィールドは 1 つだけです: Id。他のフィールドを作成するには、他に何をすればよいですか?

4

3 に答える 3

10

ActiveAndroid が最初の実行時にデータベース構造を作成することをチュートリアルで共有すること重要だと思います。モデルを変更しても、同期されません。解決策:電話/エミュレーターから db ファイルを削除すると、次回の実行時に機能します。

于 2013-02-24T05:55:55.397 に答える
1

データベースの作成後にクラスに変更を加えた可能性があるため、activeandroid はテーブル列を認識しません。apk をアンインストールするか、アプリのキャッシュ データを消去することができます。

于 2014-02-17T17:36:39.933 に答える