我一直在读BaseColumns
](https://developer.android.com/reference/android/provider/BaseColumns.html https://developer.android.com/reference/android/provider/BaseColumns.html)在 Android 中帮助构建我的数据库架构。
我知道_ID
是您必须自己创建的行的唯一标识符:
protected static final String SQL_CREATE = "CREATE TABLE " + TABLE_NAME + "( " +
_ID + " INTEGER PRIMARY KEY AUTOINCREMENT" + ...;
我也读过_COUNT
用于指代表中的行数。
但是,当我尝试使用_COUNT
,我收到一个错误。这是我尝试过的:
SQLiteDatabase db = TimetableDbHelper.getInstance(context).getReadableDatabase();
Cursor cursor = db.query(
SubjectsSchema.TABLE_NAME,
new String[] {SubjectsSchema._COUNT},
null, null, null, null, null);
cursor.moveToFirst();
int count = cursor.getInt(cursor.getColumnIndex(SubjectsSchema._COUNT));
cursor.close();
return count;
我不确定这是否是正确的使用方法,但我收到了此错误:
android.database.sqlite.SQLiteException:没有这样的列:_count(代码1):,编译时:从主题中选择_count
我应该如何使用_COUNT
?
在数据库中,两者都没有什么特别之处_id
or _count
.
您的查询返回一个_id
or _count
当表被定义为具有这样的列时,或者当查询显式计算它时。
Android 框架的许多对象都期望光标具有唯一的_id
列,很多表都定义了它。
在大多数地方,_count
预计不会出现,因此通常不会实施。如果确实需要,可以简单地使用子查询来计算,如下所示:
SELECT _id,
[other fields],
(SELECT COUNT(*) FROM MyTable) AS _count
FROM MyTable
WHERE ...
如果你想知道你自己的桌子的大小,你不需要使用_count
姓名;你可以执行像这样的查询SELECT COUNT(*) FROM subjects
,或者更简单,使用辅助函数 https://developer.android.com/reference/android/database/DatabaseUtils.html#queryNumEntries(android.database.sqlite.SQLiteDatabase,%20java.lang.String)这会为你做这件事。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)