Android 如何在BaseColumns中使用_COUNT

Android 如何在BaseColumns中使用_COUNT,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我一直在阅读Android中的BaseColumns]),以帮助构建我的数据库模式 我知道\u ID是您必须自己创建的行的唯一标识符: protected static final String SQL_CREATE = "CREATE TABLE " + TABLE_NAME + "( " + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT" + ...; 我还了解到,\u COUNT用于表示表中的行数 然而,当我尝试使用\u COUN

我一直在阅读Android中的
BaseColumns
]),以帮助构建我的数据库模式

我知道
\u ID
是您必须自己创建的行的唯一标识符:

protected static final String SQL_CREATE = "CREATE TABLE " + TABLE_NAME + "( " + 
        _ID + " INTEGER PRIMARY KEY AUTOINCREMENT" +  ...;
我还了解到,
\u COUNT
用于表示表中的行数

然而,当我尝试使用
\u 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


我应该如何使用
\u COUNT

在数据库中,
\u id
\u COUNT
没有什么特别之处

当表被定义为包含一个
\u id
\u count
列时,或者当查询显式计算该列时,查询将返回一个
\u id

Android框架的许多对象都希望游标具有唯一的
\u id
列,因此许多表定义了它

在大多数情况下,
\u count
预计不存在,因此通常不会实现。如果确实需要,可以使用子查询简单地计算,如下所示:

SELECT _id,
       [other fields],
       (SELECT COUNT(*) FROM MyTable) AS _count
FROM MyTable
WHERE ...

如果您想了解自己表格的大小,则无需使用
\u count
名称;您可以从subjects执行类似于
SELECT COUNT(*)的查询,或者更简单地说,使用一个为您执行此操作的查询。

您的create语句没有
\u COUNT
列。通过实现
BaseColumns
,您只需访问schema类中的那些值。你怎么期望它映射到SQL创建语句中?@cricket_007我理解,但我应该如何将它添加到我的数据库中。我是否应该像其他普通专栏一样添加它?这篇文章回答了这个问题吗?从我所阅读的内容来看,只有当您想要公开ContentProvider时才需要它。我不确定您自己添加列时会发生什么,但每次插入或删除时,您可能都必须手动更新表。@cricket_007这是我不确定的-我需要手动更新计数吗?我正准备在我的代码中尝试一下,看看会发生什么(我可能早就应该这么做了)。