应用程序崩溃了游标getInt

时间:2015-03-26 06:55:52

标签: android

我想使用SELECT COUNT(*) as nb查询获取表格内的行数。然后,当我想使用cursor.getInt(0)得到结果时,应用程序崩溃了!所以我用这个替换了我的代码:

public int getParcelleCount() {
    String countQuery = "SELECT * FROM " + T_PARCELLE;
    Cursor cursor = bd.rawQuery(countQuery, null);
    int nb = 0;
    if (cursor != null) {
        nb = cursor.getCount();
    }
    cursor.close();
    return nb;
}

它有效!那么为什么第一个选项错了?

1 个答案:

答案 0 :(得分:1)

您以前的代码无效,因为您试图获取值而不先移动到第一个。您检查了非正确的null。但它正在抛出光标索引超出界限(您可以在互联网上搜索)。所以你必须先将光标移动到第一个然后尝试获取值。

尝试以下代码。

String countQuery = "SELECT COUNT(*) AS NB FROM " + T_PARCELLE;
Cursor cursor = bd.rawQuery(countQuery, null);
int nb = 0;

if (cursor.moveToFirst()) {
   do
   {
       nb = cursor.getInt(0);

       }while(cursor.moveToNext());
   }
   cursor.close();
   return nb;