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)
答案 0 :(得分:2)
Cursor公开SQLiteDatabase上查询的结果。 您不需要列名来获取结果,您可以使用索引来获取查询结果。您可以使用案例中的第一个索引来获取计数。
totalCount = res.getInt(0); //this will return the count value
答案 1 :(得分:0)
您不会将字符串/文本搜索参数括在单引号中,因此它们被视为列名。
即。您实际上是在说 从表中选择w1列等于Legs列的行数,或者w2列等于Legs列或w3列等于Legs列 。但是,没有Legs专栏。
而是尝试: -
Cursor res = db.rawQuery("select count(*) from " + TABLE_W + " where w1='"+ "Legs'" + " or w2="
+ "'Legs'" + " or w3=" + "'Legs'",null);
在这种情况下,您实际上是在说 选择表中的行数,其中w1列等于字符串Legs或w2列等于字符串Legs或w3列等于字符串Legs 强>
不使用while(res.moveToFirst) { ..... }
而不是循环,因为只返回一行,使用if (res.moveToFirst) { .... };
更合适。