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) { .... };更合适。

10-05 23:17