簡體   English   中英

如何從SQLite獲取記錄總數

[英]How to get the total count of records from SQLite

我正在嘗試從Sqlite DB獲取行的總數。 以下是我正在嘗試執行的代碼段。

我不知道我在這里做錯了什么?

public static int getTotalCount(Context _context)
{
Cursor c = null;
try
{
    c = getInstance(_context).db.rawQuery("SELECT COUNT(word) FROM  "
        + WORD_TABLE, null);

    return c.getInt(c.getColumnIndex(WORD_COL));

} catch (Exception e)
{
    Log.e("getTotalCount", e.toString());
}
return 0;

異常消息:05-08 05:21:19.934:ERROR / getTotalCount(440):android.database.CursorIndexOutOfBoundsException:請求的索引-1,大小為1

在此輸入圖像描述

試試c.getInt(0);

要么

 c = getInstance(_context).db.rawQuery("SELECT COUNT(word) as WORD_COL FROM  "
    + WORD_TABLE, null);

還放了一個c.moveToFirst(); 就在rawQuery行之后,以取得良好的效果。

假設WORD_COLword 您尚未請求名為word的列。 您有一個COUNT(word)列,這是完全不同的事情。 因此,當您嘗試獲取word數據時, getColumnIndex找不到它,給您的廢話索引-1 ,由於沒有人從-1開始計數,因此它導致getInt失敗。 :)

您也可以將列重命名為更好的名稱: SELECT COUNT(word) AS word_count FROM... ,然后請求該名稱。 另一種選擇是,您知道此查詢僅返回一列,無需命名。 只需直接使用其索引即可。

rawQuery ,嘗試

c.moveToFirst();
return c.GetInt(0);

嘗試這個:

Cursor c  = _sqlDatabase.rawQuery("Select * from table", null);
System.out.println("Count:"+c.getCount());

問候,Nital Shah

您可能有此CursorIndexOutOfBoundsException因為光標沒有指向第一個結果。

嘗試這個:

try
{
    c = getInstance(_context).db.rawQuery("SELECT COUNT(word) FROM  "
        + WORD_TABLE, null);
    c.moveToFirst();
    return c.getInt(c.getColumnIndex(WORD_COL));

} catch (Exception e)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM