Android sqlite:获取表中的行数?

时间:2014-12-27 16:28:01

标签: java android sql sqlite cursor

我试图使用以下代码找到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); 

   }

当我运行应用程序时,我总能看到数字" 1"在textview中,即使我确定行计数不是1。

我的代码出了什么问题?

注意:该应用不会崩溃,我也不会收到任何错误。

2 个答案:

答案 0 :(得分:3)

你得到了光标的数量。 光标返回的行数。

你应该:

cursor.getInt(ColumnNameIndex);

还注意到你需要移动到光标的第一个位置:

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

答案 1 :(得分:1)

"SELECT COUNT(*) FROM userinfo;"

返回始终带有计数的结果,它是一行。替换为

"SELECT * FROM userinfo;"

但更好的使用方式

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