【问题标题】:Why use the Constants interface for SQLite to hold field names?为什么使用 SQLite 的常量接口来保存字段名称?
【发布时间】:2013-06-08 07:45:59
【问题描述】:

在“Hello, Android”的 SQLite 章节中,创建了一个接口Constants 来保存一些常量字符串:表名和字段名。

为什么?使用TITLE 比直接使用"title" 更有用吗?我还缺少什么吗?

顺便说一句:如果我需要两张桌子,应该如何组织?我应该制作FirstTableConstantsSecondTableConstants 接口吗?

【问题讨论】:

标签: java android sqlite constants


【解决方案1】:

如果您要多次使用一个字符串,最好为它创建一个常量。 它可以防止多次创建字符串。 对象分配不是免费的,因此您会看到一些性能提升。

考虑在循环中创建字符串的情况。

for(int i=0;i<n;++i){
    System.out.println("title");
}

vs 使用常量:

for(int i=0;i<n;++i){
    System.out.println(TITLE);
}

如果分配字符串“title”需要 1 毫秒,则第一个循环代码的运行时间为 N X 1 毫秒。

此外,使用常量构建 SQL 语句将比为类型(文本、整数、)修饰符(唯一、非空)等的语句关键字重复创建新字符串更快。

 String TABLE_SCHEMA = "(" +
            ID + " integer primary key autoincrement, " +
            COL_FOO1 + " text, " +
            COL_FOO2 + " text, " +
            COL_FOO3 + " text, " + ...

如果您将“文本”设为常量,您就不会一遍又一遍地创建该字符串,因此您的 TABLE_SCHEMA 字符串会更快地创建。

 String TABLE_SCHEMA = "(" +
            ID + " integer primary key autoincrement, " +
            COL_FOO1 + TYPE_TEXT +
            COL_FOO2 + TYPE_TEXT +
            COL_FOO3 + TYPE_TEXT + ...

【讨论】:

  • 另一个优点是使用常量可以避免拼写错误(是的,拼写错误可能会发生;-))
【解决方案2】:

如果您正在使用一个类,您可能应该将它们作为 public static final String TITLE = "Some Title" 字段。最好以这种方式使用它,这样您在将其键入命令时就不会出错。您只需键入变量名称。

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多