2016-10-31 17 views
0

私はAndroidアプリケーションを開発しています。私はJavaクラスの外でSQLiteクエリステートメントを保持したいと思います。別ファイルのSQLiteクエリステートメント

すべてのSQL文を格納するファイルの.propertiesファイルを使用すると考えました。細かいサウンド、.propertiesファイルファイルの各プロパティは、文字列を保持している - 私も準備された文を保存し、それらに必要なパラメータを与えることができ、例えば:

get.student.with.first.name=SELECT * FROM Students WHERE FirstName = ?; 

をしかし、私はまた私のデータベースの永続契約を実装していますそのようなテーブルは:

public final class StudentPersistenceContract { 
    private StudentPersistenceContract() {} 

    public static abstract class StudentEntry implements BaseColumns { 
     public static final String TABLE_NAME = "Student"; 

     public static final String COLUMN_FIRST_NAME = "FirstName"; 
     public static final String COLUMN_LAST_NAME = "LastName"; 
    } 
} 

私はの.propertiesファイルのエントリに、テーブルやカラム名をハードコーディングしたくない、私はそうのように動的にアクセスしたいと思います:StudentPersistenceContract.StudentEntry.TABLE_NAMEを、

私が考えていたことの1つは、必要なクエリを「構築」するためにインスタンス化できないクラスを作成することでした。

public final class SqlQueryConstructor { 

    private SqlQueryConstructor() {} 

    public static final String GET_STUDENT_WITH_FIRST_NAME = "SELECT * FROM " + StudentPersistenceContract.StudentEntry.TABLE_NAME + " WHERE " + StudentPersistenceContract.StudentEntry.COLUMN_FIRST_NAME + " = ?;"; 
} 

...の線に沿って何か私がアクセスすることにより、目的のSQLクエリを取得することができますこの方法:SqlQueryConstructor.GET_STUDENT_WITH_FIRST_NAME

これはまだJavaクラスですが、あることを知って良いだろう私のSQLはすべてそこにあり、どこにでも散らばっていません。

これは良い考えですか?他の選択肢はありますか?

+1

'すべてのSQL文を格納する.propertiesファイルの使用を検討しました。 .propertiesファイルの各プロパティは、文字列 'を使用していないのはなぜですか?** strings.xml **? –

答えて

0

私は、SQLite文に静的フィールドを持つクラスを使用して2番目のアプローチを使用することに決めました。私はそれが時に静的な最終文字列を使用するのstrings.xmlとを使用することが良いことだ時に読ん:android - strings.xml vs static constantsAndroid strings, Should I use strings.xml or java stringsなど

だから私は、ローカライズのためのstrings.xmlとSQL文の静的フィールドを持つクラスを使用します。

関連する問題