2014-12-27 76 views
2

我試圖找到行吶SQLite表使用此代碼的數量:Android的sqlite:獲取表中的行數?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Gets the data repository in write mode 
    SQLiteDatabase mydatabase = openOrCreateDatabase("app_alldata",MODE_PRIVATE,null); 

    mydatabase.execSQL("CREATE TABLE IF NOT EXISTS userinfo(Username VARCHAR,Password VARCHAR);"); 

    Cursor cursor = mydatabase.rawQuery("SELECT COUNT(*) FROM userinfo;",null); 

    int cnt = cursor.getCount(); 
    String letsee = Integer.toString(cnt); 
    final TextView textViewToChange = (TextView) findViewById(R.id.mytext); 
    textViewToChange.setText(letsee); 

    } 

當我運行應用程序時,我總是看到在TextView中「1」的個數,即使我敢肯定,行數不是1.

我的代碼有什麼問題?

注意:該應用程序不會崩潰,我不會收到任何錯誤。

回答

1
"SELECT COUNT(*) FROM userinfo;" 

返回總是以計數結果,它是一行。通過

"SELECT * FROM userinfo;" 

,但更好的辦法取代它使用

Cursor cursor = mydatabase.rawQuery("SELECT COUNT(*) FROM userinfo;",null); 
int cnt = cursor.getInt(0); 
3

你所得到的光標的數量。 遊標返回的行數。

你應該:

cursor.getInt(ColumnNameIndex); 

也注意到,你需要移動光標的第一位置:

boolean isOk = cursor.moveToFirst() 
int count = cursor.getInt(0) 
+0

我試圖cursor.getInt(用戶名),和現在這樣說的: 「用戶名」無法解析爲變量。 – user2840510 2014-12-27 16:37:00

+0

看看我的編輯 – royB 2014-12-27 16:42:21

+0

如果你想知道哪些列返回使用'cursor.getColumnNames()'並且只是調用'cursor.getInt(cursor.getColumnIndex(names [0]))' – royB 2014-12-27 16:46:34

相關問題