什么被认为是处理数据库连接的最佳做法? (我省略了DatabaseHelper类中的构造函数和onUpgrade方法)这些只是我在互联网上找到的两种方式,也许你有更好的处理方式?我很乐意听到。
选项1
public class DatabaseManager {
private SQLiteDatabase mDb;
public DatabaseManager(Context context) {
DatabaseHelper helper = new DatabaseHelper(context);
helper.getWritableDatabase();
}
// ... methods that use mDb
private class DatabaseHelper extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase db) {
mDb = db;
//create database
}
@Override
public void onOpen(SQLiteDatabase db) {
mDb = db;
}
}
}
选项2
public class DatabaseManager {
private DatabaseHelper mDbHelper;
public DatabaseManager(Context context) {
mDbHelper = new DatabaseHelper(context);
}
// ... methods that fetch the db
private void sampleMethod() {
SQLiteDatabase db = mDbHelper.getWritableDatabase();
//do stuff with database
mDbHelper.close();
}
private static class DatabaseHelper extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase db) {
//create database
}
}
}
此外,每次在选项2中使用数据库时是否需要调用close()?至于使用选项1,我猜你需要在调用app的onDestroy时调用close()?
答案 0 :(得分:1)
我曾经担心这一切,但最近我开始使用ORMLite。它是一个非常轻巧的ORM与Android库,让您担心这种东西。
我想说这很快就会成为最佳实践,因为它在处理数据库时会删除大量重复的代码。它也会定期更新,维护人员会很快响应查询。