【发布时间】:2016-08-11 21:06:35
【问题描述】:
我一直在阅读 Android 中的 BaseColumns](https://developer.android.com/reference/android/provider/BaseColumns.html) 以帮助构建我的数据库架构。
我知道_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: no such column: _count (code 1): , while compile: SELECT _count FROMsubjects
我应该如何使用_COUNT?
【问题讨论】:
-
您的 create 语句没有
_count列。通过实现BaseColumns,您只需访问模式类中的这些值。您希望它如何映射到 SQL 创建语句中? -
@cricket_007 我明白,但我应该如何将它添加到我的数据库中。我应该像任何其他普通列一样添加它吗?
-
这篇文章回答了这个问题吗? stackoverflow.com/questions/6792554/…
-
根据我的阅读,只有当你想公开一个 ContentProvider 时才需要它。我不确定当您自己添加列时会发生什么,但您可能必须在每次插入或删除时手动更新表。
-
@cricket_007 这就是我不确定的——我需要手动更新计数吗?我正准备在我的代码中尝试一下,看看会发生什么(我可能应该早点这样做)。
标签: android sqlite android-sqlite