为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 SQL 资源查询中使用格式字符串

如何在 SQL 资源查询中使用格式字符串

绝地无双 2023-11-10 16:09:43
我在代码中有一些字符串常量。我可以将所有这些都放入资源中吗strings.xml?我认为单独使用列名的可能性仍然存在。有必要在以后对数据库的请求中搜索帖子索引。不使用索引,数字会令人困惑、不舒服。private static final String NAME_DB = "cars.db";private static final String TABLE_NAME = "cars";private static final String COL_BRAND = "brand";private static final String COL_MODEL = "model";private static final String COL_COLOR = "color";private static final String COL_MAX_SPEED = "max_speed";private static final String COL_ENGINE_POWER = "engine_power";private static final String CREATE_TABLE =        "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" +                "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +                COL_BRAND + " TEXT NOT NULL, " +                COL_MODEL + " TEXT NOT NULL, " +                COL_COLOR + " TEXT, " +                COL_MAX_SPEED + " INTEGER," +                COL_ENGINE_POWER + " INTEGER)";private static final String INSERT_DEFAULT_VALUES =        "INSERT INTO " + TABLE_NAME + "(brand, model, color, max_speed, engine_power) VALUES" +                "('Audi', 'Q7 II', 'White', 233, 252)," +                "('Acura', 'ZDX', 'Black', 241, 300)," +                "('BMW', 'X1 I', 'Blue', 205, 204)," +                "('Hyundai', 'Solaris', 'Red', 100, 100)," +                "('Hyundai', 'Tucson', 'Gray', 150, 177)," +                "('BMW', '8 G14', 'Black', 250, 320)";private static final String SELECT_ALL = "SELECT * FROM " + TABLE_NAME;private static final String SELECT_TOP_1 = "SELECT * FROM " + TABLE_NAME + " LIMIT 1";示例代码DatabaseAdapter(Context context) {    db = context.openOrCreateDatabase(NAME_DB, MODE_PRIVATE, null);    db.execSQL(CREATE_TABLE);    Cursor cursor = db.rawQuery(SELECT_TOP_1, null);    if (!cursor.moveToFirst()) {        db.execSQL(INSERT_DEFAULT_VALUES);    }}String[] selectAll() {    Cursor cursor = db.rawQuery(SELECT_ALL, null);    if (!cursor.moveToFirst()) {        return null;    }
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

有一些使用 XML 中的 SQL 的解决方案。看看你是否可以使用其中之一。

然而,恕我直言,最好集中代码并将文本保留在那里,甚至没有常量。

单独关注:数据库查询和结果对象。这可以通过提供低级结果集对象的 Stream 来完成,使用类可以映射到它们自己的类。解耦类;保持各层分离。(在 Android 上可能没那么有趣。)使用代码变得非常紧凑,查询在其他地方。

我的论点:

  • 减少来回跳转到不同来源的次数

  • 更好的可读性

  • 列名不变

  • 常量大写的可读性较差

  • 将代码放在一起可以防止类似的查询在无人值守的情况下传播

然而,在更高级别的业务代码中它仍然比 SQL 更好,将 SQL 隔离在 XML 中以在其他地方获得更小的源和查询。所以至少要这样做。


查看完整回答
反对 回复 2023-11-10
  • 1 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信