2011-12-30 24 views
1

我在SO上查找並看到了這個(和其他人喜歡它):sql direct way to get number of rows in table,但是,Select被顯示爲一個標記,就像count一樣。我試圖使用mDb.execSQL(),但只返回void。任何幫助如何做到這一點,將不勝感激。代碼是:
public int getRowNumber(){return mDb.execSQL(「SELECT COUNT(*)FROM notes」);}我得到一個錯誤,說「無法返回無效的結果」。如何獲取SQL數據庫中的行數?(Android SDK)

+1

你的代碼是什麼樣的?它不應該返回無效。在你發佈的答案中的方法是正確 – 2011-12-30 20:37:52

+0

public int getRowNumber(){ \t return mDb.execSQL(「SELECT COUNT(*)FROM notes」);}我得到一個錯誤,說「無法返回無效結果」。感謝您的期待。 – jersam515 2011-12-30 20:40:13

+0

再次閱讀文檔.... execSQL不適合查詢!!!!!!! – Selvin 2011-12-30 20:49:31

回答

2

你得到的錯誤意味着你的方法不能返回void.execSQL本身返回無效的,而且你回來從你自己的方法相同的虛空當中被聲明爲返回一個int:

mDB.execSQL(...); // returns void 
return mDB.execSQL(...); // re-returns void 

public int foo() { 
    return void; // error! 
} 

d.android.com link for reference.


我知道你已經接受了,但在這裏是做什麼你樣的需要做一個快速&骯髒的測試方法:

public int testCount() { 
    Cursor c = m_db.rawQuery("select count(*) from mytable", null); 
    int tst = 0; 
    if (c.moveToNext()) { 
     tst = c.getInt(c.getColumnIndex("count(*)")); 
    } 
    c.close(); 
    return tst; 
    } 
+0

謝謝,我如何得到它不返回無效並返回我執行它的結果? – jersam515 2011-12-30 20:48:12

+1

由於您無法更改'execSQL'的返回類型,因此您必須執行一些其他操作,比如'query'並讀取返回的Cursor以查找結果的int值,然後從您的方法返回該值。 – Pedantic 2011-12-30 20:50:15

+0

非常感謝。 – jersam515 2011-12-30 20:52:17

1

mDB.execSQL(...);返回void,並且您的選擇查詢返回計數,這就是您遇到錯誤的原因。相反,你可以使用query(或)rawQuery,如mDb.rawQuery(「SELECT COUNT(*)AS cnt FROM notes」,null);從Cursor返回Cursor,得到'cnt'。

+0

謝謝你。 – jersam515 2011-12-30 20:58:47

相關問題