java - 在 Android SQLite 表中返回 Count(*)

标签 java android sqlite

这是我的简单函数:

public int countCats(String tableName) {
    int catCount = 0;
    Cursor cursor = database.rawQuery("SELECT COUNT(*) FROM " + MySQLiteHelper.TABLE_CAT, null);
    if (cursor != null) {
        catCount = cursor.getColumnIndex("COUNT");
    }

    return catCount;
}

这个表有 11 行。但是这个函数返回-1。如何处理这个问题?

编辑:

我已经更新到这个:

public int countCats(String tableName) {
    int catCount = 0;
    Cursor cursor = database.rawQuery("SELECT COUNT("+ MySQLiteHelper.COLUMN_CAT+ ") FROM " + MySQLiteHelper.TABLE_CAT, null);
    if (cursor.moveToFirst()) {
        catCount = cursor.getInt(0);
    }
    cursor.close();


    return catCount;
}

现在我得到 0;

最佳答案

您只是请求游标中不存在的 COUNT 列的列索引。因此返回 -1。

要检索计数值,将光标移动到第一行并获取第一列值:

if (cursor.moveToFirst()) {
    catCount = cursor.getInt(0);
}

(COUNT(*) 查询总是有一个结果行,但无论如何检查 moveToFirst() 的结果是一个好习惯。)

关于java - 在 Android SQLite 表中返回 Count(*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20927104/

相关文章:

android - 当 ProgressBar 在 android 中可见时如何禁用用户交互?

android - 切换线性布局

java - 带有 Java API 的 Node Web 应用程序

Java正则表达式解析字符串的中间值

android - 将两个相似的应用程序上传到 Android Market

java - ListView 仅显示数据库中匹配条件集的 4 条记录中的 3 条

c++ - 如何填充数据库sqlite tablewidget

java - Guice - 绑定(bind)由辅助注入(inject)工厂创建的实例

java - JDBC 连接到 Amazon ec2 上的 MySQL

sqlite中的Android真实转义字符串