我想使用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;
}
它有效!那么为什么第一个选项错了?
答案 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;