私は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はすべてそこにあり、どこにでも散らばっていません。
これは良い考えですか?他の選択肢はありますか?
'すべてのSQL文を格納する.propertiesファイルの使用を検討しました。 .propertiesファイルの各プロパティは、文字列 'を使用していないのはなぜですか?** strings.xml **? –