2012-02-21 3 views
0

最近、私はアンドロイドアプリで疑似AciveRecordスタイルのdbコールを作成しようとしていて、User.find(Context dbContext)、User.find(long id 、Context dbContext)、User.delete(長いID、ContextのdbContext)など 疑似AciveRecord私はそれを "本当のActiveRecordライブラリ"またはそのようなものにするつもりはないという意味です。私はちょうど私のコードとActiveRecordのスタイルでdbコールを理解しやすいようにしたい個人的に私にとって最高です。 これまでのところは良いと私は例えば、このコードを持つすべての問題を持っていない:static getApplicationContext for SQLiteOpenHelper

public static Cursor allAsCursor(Context dbContext) { 
    DBHelper dBHelper = new DBHelper(dbContext); 
    SQLiteDatabase database = dBHelper.getReadableDatabase(); 

    Cursor dbQueryResult = database.query(DBHelper.TABLE_NAME_USERS, null, null, null, null, null, "_id DESC"); 
    dbQueryResult.getCount(); 

    database.close(); 
    dBHelper.close(); 
    dbContext = null; 


    return dbQueryResult; 
} 

しかし、私を悩ます事は、私はこのように私は、呼び出しを行うすべての時間を、活動状況や何かを渡すことですUserクラス(User.find、User.allなど)にすべてのdbクエリーのアプリケーションコンテキストを格納する静的変数を与えるだけの良い考えがあるのだろうか?これは、アプリの昼食時や最初のクエリ要求の前に行うことができます。

私の考えは、共有アプリケーションから常に得られるクエリの静的コンテキストマネージャを取得したiOS CoreDataのものです。

ご意見、ご提案、ご意見はありますか?

ありがとうございました。

+0

あなたがユーザーのDAOクラスを意味するなら、あなたは既にあなたのdbヘルパークラスにアプリケーションコンテキストを渡していると思うし、そのdb helperがあなたのユーザーDAOクラスのために提供するdb参照を使用しているようです。言い換えると、コンテキストはdb helperに渡され、ユーザdaoが使用するdbを返します。それが私の理解です。 –

+0

はい、それはうまくいきます、私はそれがちょっと退屈なことを除いて0の問題を持っています。これは、すべてのクエリに対してただ1つの静的コンテキスト参照を保持することが良いアイデアか練習かどうかを尋ねる理由です。 –

答えて

0

私の推測では、メソッドは静的なので、これらのDBクラスのメソッドはすべて静的なので、クラスは常に静的な方法で使用されていると推測しています。また、Activityコンテキストまたはアプリケーションコンテキストを渡していますか?アプリケーションコンテキストを使用している場合は、コンテキストを設定するための別の静的メソッドを追加し、コンテキストに対するプライベート静的参照を追加します。

例えば:

private static Context context; 

public static void setContext(Context context){ 
    YourDBHelperClass.context = context; 
} 

今、あなたの方法は、単にあなたが取引を行う1たびに渡されるのではなく、このコンテキストを参照することができます。

アクティビティコンテキストを渡している場合、私はそれを残すことにします。そうしないと、古くなったコンテキストを使用する危険性があります。

+0

うまくいきます。 –

+0

このクラスは、クラス/静的メソッドを使用してdbにクエリを行い、独自のインスタンスメソッドを使用して新しいUserオブジェクトを作成するために使用されます。 –

+0

私はまた、より永続的なコンテキストリファレンスのためのサービスについて考えていました。それについての考えは?ありがとう。 –

関連する問題