我正在尝试实现一个使用SQLite作为其数据存储的Android应用程序。我正在使用ActiveAndroid。我有一个名为Item的模型,我按以下方式创建项目,从Activity的onCreate方法调用它:
Item item = new Item();
item.name = "test item";
item.save();
启动我的应用程序后,我转到Android设备监视器以访问数据库文件。我看到的是我的应用程序的文件系统中的2个数据库:Application.db和todoListDatabase:
这两个数据库都包含一个名为items的表,但只有Application.db版本的items表实际上包含我创建的新项目记录。那是对的吗? 如果这是正确的,那么todoListDatabase是什么意思?
修改 以下是我的相关文件:
我的SQLite Helper类:
public class ItemDatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "todoListDatabase";
private static final String ITEMS = "items";
private static final String KEY_ID = "id";
private static final String KEY_BODY = "name";
public ItemDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TODO_TABLE = "CREATE TABLE " + ITEMS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_BODY + " TEXT" + ")";
db.execSQL(CREATE_TODO_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion == 2) {
db.execSQL("DROP TABLE IF EXISTS " + ITEMS);
onCreate(db);
}
}
}
我的项目类:
@Table (name = "Items")
public class Item extends Model {
@Column(name = "name")
public String name;
public Item() {
super();
}
public Item(String name){
super();
this.name = name;
}
}
答案 0 :(得分:0)
这个问题中没有足够的信息可以让它得到回答。 SQLite数据库不仅会出现。你必须创建它们。通常,您使用SQLiteOpenHelper执行此操作。
除非你做了一些奇怪的事,否则你的数据库将在以下目录中:
/data/data/<your application's package name>/databases
例如,Google邮件应用程序的数据库可能是:
/data/data/com.google.android.gm/databases/mail.db
答案 1 :(得分:0)
因为我使用的是ActiveAndroid,所以创建SQLiteOpenHelper
正在做双重工作。这就是我看到2个数据库的原因。为了解决这个问题,我删除了ItemDatabaseHelper
类。然后,当我转到Android设备监视器查看数据库文件时,我看到Application.db是那里唯一的数据库,它包含我在其中创建的项目。