Android数据库在应用程序启动前定位数据
我只需要选择操作。因此,应该在应用程序启动之前插入数据。最好的方法是什么?使用的子类访问数据库。创建数据库时,Android数据库在应用程序启动前定位数据,android,database,sqlite,select,insert,Android,Database,Sqlite,Select,Insert,我只需要选择操作。因此,应该在应用程序启动之前插入数据。最好的方法是什么?使用的子类访问数据库。创建数据库时,onCreate将被调用一次 要使用数据库,您可以执行以下操作: DBHelper db = new DBHelper(context); db.getReadableDatabase().query(....); db.close(); 要扩展SQLiteOpenHelper请执行以下操作(创建表的sql未经测试!): }谢谢您的回复,但我还有更多问题要问。我正在使用一个类,比如DB
onCreate
将被调用一次
要使用数据库,您可以执行以下操作:
DBHelper db = new DBHelper(context);
db.getReadableDatabase().query(....);
db.close();
要扩展SQLiteOpenHelper
请执行以下操作(创建表的sql未经测试!):
}谢谢您的回复,但我还有更多问题要问。我正在使用一个类,比如DBHelper,在另一个类中(我称之为DBAdapter),我正在创建一个DBHelper实例,就像您所做的那样。但是,每次应用程序启动时都会调用它。我想创建表并插入数据一次。我怎样才能解决这个问题?编辑:在onUpgrade方法中,我将删除所有表并再次调用onCreate。这是一个问题吗?完全可以放弃一切,从头开始重新创建。如果您想通过在onUpgrade中调用onCreate来实现这一点,也可以。谢谢,但是如何避免每次应用程序启动时都进行插入操作呢?我正在DBAdapter中创建DBHelper的实例,在main活动中,我正在创建DBAdapter的实例。在创建数据库文件时,onCreate()只调用一次!自上次启动以来,当数据库_版本发生更改时,只调用一次onUpdate()。每次应用程序打开数据库时都会调用onOpen()。
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "database.db";
private static final Integer DATABASE_VERSION = 1;
DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/*
* Called ONCE on the very first db access (when the db file is created)
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE mytable (_id PRIMARY KEY AUTOINCREMENT, value TEXT); \n" +
"INSERT INTO mytable (value) VALUES ('data'));");
}
/*
* Called every time you open a database
*/
@Override
public void onOpen(SQLiteDatabase db) {
}
/*
* Called ONCE if DATABASE_VERSION has changed since the last instantiation of DBHelper
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}