0

我的数据库中有这样的查询:

Cursor c= ourDB.rawQuery("SELECT SUM(odometer) AS odometer FROM tripmileagetable WHERE car='abdul' AND date LIKE '2012-07%'", null);
        if(c.getCount()<=0){
            return 0;

        }else{

            int sum= c.getInt(0);
            Log.i("Sum of odometer", ""+sum);
            return sum;

        }

它给了我这个例外。如果我在其他部分写这个:

int sum= c.getColumnIndex("odometer");
            Log.i("Sum of odometer", ""+sum);
            return sum;

然后返回 0,但是当我输入 0 时,它给了我异常,我无法找出我的错。任何人都可以帮忙吗?

4

4 回答 4

3

您错过了c.moveToFirst();这就是您的光标给出异常的原因,因为默认情况下它指向索引-1。

于 2012-07-12T09:50:02.573 回答
0

一些建议但很方便:

  1. 在开始使用光标之前,我会检查它是否为空
  2. 将光标移动到第一个索引
  3. 而不是提到 c.getInt(0); ,我会使用 c.getInt(c.getColumnIndex("FirstColumnName")));

例如:

if (cursor != null) {
    if (cur.moveToFirst()) {
        do {
            temp.add(cur.getString(cur.getColumnIndex("FirstColumnName"))); // "FirstColumnName" is the field name(column) of the Table                 
        } while (cur.moveToNext());
    }
}
于 2012-07-12T09:54:16.457 回答
0

您应该首先检查光标是否有任何元素并将其移动到第一个索引。在这种情况下,您的数据库没有返回任何结果。

if (cursor.moveToFirst()) {
 int sum= c.getInt(0);
}
于 2012-07-12T09:49:49.390 回答
0

你可以试试这个

cursor.moveToFirst();

while(cursor.moveToNext() )
{
   // YOUR CODE HERE
}
于 2012-07-12T10:03:34.357 回答