Android 如何在BaseColumns中使用_COUNT
我一直在阅读Android中的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
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这是我不确定的-我需要手动更新计数吗?我正准备在我的代码中尝试一下,看看会发生什么(我可能早就应该这么做了)。