我试图使用以下代码找到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。
我的代码出了什么问题?
注意:该应用不会崩溃,我也不会收到任何错误。
答案 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);