public Cursor legsWorkout(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select count(*) from " + TABLE_W + " where w1="+ "Legs" + " or w2="
+ "Legs" + " or w3=" + "Legs",null);
return res;
}
///other part
Cursor res = myDB.bicepsWorkout();
while (res.moveToFirst()){
int totalCount = res.getInt(0);
txtTest.setText(String.valueOf(totalCount));
}
现在的问题是,我无法检索数据,因为
res.getString/int
需要一个列名/索引,而且在技术上,仅执行此查询的结果时没有列。所以我得到这个错误:
android.database.sqlite.SQLiteException: no such column: Biceps (code 1)
最佳答案
您没有将字符串/文本搜索参数括在单引号中,因此它们被视为列名。
也就是说,您实际上是说从表中选择行数,其中w1列等于legs列,w2列等于legs列,w3列等于legs列。但是,没有“腿”列。
相反,请尝试:
Cursor res = db.rawQuery("select count(*) from " + TABLE_W + " where w1='"+ "Legs'" + " or w2="
+ "'Legs'" + " or w3=" + "'Legs'",null);
在这种情况下,您实际上是说选择表中的行数,其中w1列等于string legs,w2列等于string legs,w3列等于string legs
不使用
while(res.moveToFirst) { ..... }
因为您没有循环,因为只返回一行,所以使用if (res.moveToFirst) { .... };
更合适。