在Android中,应该在哪里保存数据库查询?

时间:2018-04-21 13:08:11

标签: android performance sqlite android-cursor

我有一个小型Android项目,我目前在我的Activity类中声明并调用数据库(SQLite)查询。但是,查询有点冗长,我发现自己在用户执行某些操作后反复声明并调用相同的查询(例如更改日期并从该日期加载数据)。因此,我想知道是否应该将查询保存在单独的类(例如Database Contract类?)中,或者甚至可能在它们自己的返回Cursor的方法中。我会想象可以使用方法getTransactionsByDate(Date newDate)的方法。是否存在我可能不知道的既定模式?

1 个答案:

答案 0 :(得分:0)

你的意思是什么?

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是一个扩展SQLiteOpenHelper并且具有数据库onCreateonUpdate方法的类。