2016-10-26 21 views
-1

在數據庫中。沒有獲取在android sqlite表中存在的行數

public int getCnt() { 
    String countQuery = "SELECT * FROM " + TABLE_LOG; 
    SQLiteDatabase db = this.getReadableDatabase();  
    Cursor cursor = db.rawQuery(countQuery, null) 
    int cnt = cursor.getCount(); 
    cursor.close(); 
    return cnt; 
} 

也試過

public long getCnt() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    long cnt = DatabaseUtils.longForQuery(db, "SELECT COUNT(*) FROM " + TABLE_LOG, null); 
    return cnt; 
} 

在主

int x =0; // long for other func.. 
x = dbh.getCnt(); 
Toast.makeText(getApplicationContext(),String.valueOf(x),Toast.LENGTH_SHORT).show(); 

    if(x==0){ 
     //do some stuff 
     } 
    else{ 
     //do some other stuff 
    } 

它的工作原理,但只有當表中有0行, 當它遇到的任何行,我不知道哪裏出了問題,但 應用程序停止,並請讓我知道是否需要任何其他信息

+0

檢查https://developer.android.com/reference/android/database/DatabaseUtils.html#queryNumEntries(android.database.sqlite.SQLiteDatabase,java.lang.String,java.lang.String) – Raghunandan

+1

第二個片段需求之間FROM和「或者它會像 'SELECT COUNT(*)FROMTABLE_LOG'的 代替 'SELECT COUNT(*)FROM TABLE_LOG' – denispyr

+0

'長longForQuery(SQLiteDatabase分貝, 查詢字符串,字符串 [空間] selectionArgs)' 在db上運行查詢並返回第一行第一列的值的實用程序方法。 – Raghunandan

回答

1

嘗試這樣的事情。

Cursor cur = db.rawQuery("SELECT SUM(myColumn) FROM myTable", null); 

if(cur.moveToFirst()) 
{ 
    return cur.getInt(0); 
} 
+0

在哪裏存儲返回的值以及如何?總行數。 – Mohit

+1

cursor.moveToFirst();和int count = cursor.getCount();這兩行對於獲取表中的行數很有用。您可以返回計數值以備後用。 –

+0

這正是它所做的。請記住根據您的需要更換myColumn和myTable。行的總數將由cur.getInt(0)給出; –

1

首先,如果您只需要計數,將數據加載到行中效率非常低。如果您需要計數,您應該使用queryNumEntries

+0

不工作!!!但只有當表格中有一些內容時。 – Mohit

相關問題