SQLite查询语句在单独的文件中

时间:2016-10-31 16:28:15

标签: java android sql sqlite

我正在开发一个Android应用程序,我想将我的SQLite查询语句保留在我的Java类之外。

我考虑使用 .properties 文件来存储我的所有SQL语句。听起来不错, .properties 文件中的每个属性都包含一个字符串 - 我甚至可以存储准备好的语句并为它们提供所需的参数,例如:

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

但是,我还为我的数据库表实现了Persistence Contracts:

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等< / p>

我想到的一件事是创建一个无法实例化的类来“构造”我需要的查询。有些东西......

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 + " = ?;";
}

这样我可以通过访问:SqlQueryConstructor.GET_STUDENT_WITH_FIRST_NAME

来获取所需的SQL查询

这仍然是一个Java类,但是知道我的所有SQL都在那里并且没有分散在各地,这将是一件好事。

这是个好主意吗?还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

我决定使用我的第二种方法 - 使用带有静态字段的类用于SQLite语句。我读到了什么时候使用strings.xml以及何时使用静态最终字符串:android - strings.xml vs static constantsAndroid strings, Should I use strings.xml or java strings等等。

因此我将使用strings.xml进行本地化,并使用带有SQL语句的静态字段的类。