在Android中,数据库查询应该放在哪里?
In Android, where should database queries be kept?
我有一个小的 Android 项目,目前我在 Activity classes 中声明和调用数据库 (SQLite) 查询。但是,查询有些冗长,我发现自己在用户执行某些操作(例如更改日期和从该日期加载数据)后一遍又一遍地声明和调用相同的查询。因此,我想知道查询是否应该保存在单独的 class 中(例如数据库契约 class?),或者甚至可能保存在它们自己的 return 游标的方法中。我会想象可以使用类似于方法 getTransactionsByDate(Date newDate)
的东西。有没有我可能不知道的既定模式?
你是这个意思吗?
public class DatabaseSource {
private SQLiteDatabase mDatabase;
private DatabaseHelper mHelper;
private Context mContext;
public DatabaseSource(Context context){
mContext = context;
mHelper = new DatabaseHelper(mContext);
}
public void open() throws SQLException{
mDatabase = mHelper.getWritableDatabase();
}
public void close(){
mDatabase.close();
}
public void insertData(int something){
ContentValues values = new ContentValues(1);
values.put(DatabaseHelper.COLUMN, something);
mDatabase.insert(DatabaseHelper.TABLE, null, values);
}
public Cursor getAll(){
Cursor cursor = mDatabase.rawQuery("SELECT * FROM TABLE");
return cursor;
}
}
这缩短了查询调用过程。在此示例中,DatabaseHelper
是一个 class,它扩展了 SQLiteOpenHelper
,并具有用于数据库的 onCreate
和 onUpdate
方法。
我有一个小的 Android 项目,目前我在 Activity classes 中声明和调用数据库 (SQLite) 查询。但是,查询有些冗长,我发现自己在用户执行某些操作(例如更改日期和从该日期加载数据)后一遍又一遍地声明和调用相同的查询。因此,我想知道查询是否应该保存在单独的 class 中(例如数据库契约 class?),或者甚至可能保存在它们自己的 return 游标的方法中。我会想象可以使用类似于方法 getTransactionsByDate(Date newDate)
的东西。有没有我可能不知道的既定模式?
你是这个意思吗?
public class DatabaseSource {
private SQLiteDatabase mDatabase;
private DatabaseHelper mHelper;
private Context mContext;
public DatabaseSource(Context context){
mContext = context;
mHelper = new DatabaseHelper(mContext);
}
public void open() throws SQLException{
mDatabase = mHelper.getWritableDatabase();
}
public void close(){
mDatabase.close();
}
public void insertData(int something){
ContentValues values = new ContentValues(1);
values.put(DatabaseHelper.COLUMN, something);
mDatabase.insert(DatabaseHelper.TABLE, null, values);
}
public Cursor getAll(){
Cursor cursor = mDatabase.rawQuery("SELECT * FROM TABLE");
return cursor;
}
}
这缩短了查询调用过程。在此示例中,DatabaseHelper
是一个 class,它扩展了 SQLiteOpenHelper
,并具有用于数据库的 onCreate
和 onUpdate
方法。