我开始在我的 Android 应用程序中使用 SQLite。我对数据库并不陌生,我有很多年使用 Delphi 进行数据库工作的经验,这确实减轻了使用数据库的一些工作。
在应用程序中,可能有一张包含多列的表格。从表中读取数据时,会执行一些 SQL,然后使用游标来访问数据。
游标上有几种方法可以访问数据,其中一种使用表中的列索引 - 我在网上看到的许多示例都使用它。例如:
cursor.getString(3);
将“3”嵌入代码中并不是最好的主意,因此您可以使用:
int idx = cursor.getColumnIndex( "THECOLUMNNAME" );
cursor.getString(idx);
对表和列多次使用 getColumnIndex() 是一种浪费。保持数十或数百列的索引常量很容易出错。
我的问题是 - 做这类事情的最佳实践是什么?
我应该扩展 Cursor 以更好地表示特定表吗?
Thanks,
Mike
当您的列很少时,特别是当这些列没有正确的名称时(例如SELECT MAX(x), MIN(x) FROM t
),使用固定列索引是完全可以的。
当列的数量/顺序稍后可能会更改时,或者当查询与源代码中的游标访问之间存在较大距离时,这会更加危险。
如果你想避免太多getColumnIndex
调用时,您确实应该缓存返回值。
使用包含列索引和对游标的引用的包装类可以使这变得更容易,如下所示:
Cursor cursor = db.query(...);
Field foo = new Field(cursor, "FOO");
Field bar = new Field(cursor, "BAR");
while (cursor.moveToNext()) {
foo.getString();
bar.getInteger();
}
(这个类的实现留作练习...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)