从sqlite数据库中恢复特定的表项

时间:2016-02-11 03:52:19

标签: android database sqlite

我有一个SQLite数据库,我试图查询以查找特定类型的所有项目。这是我为了查询我的数据库而调用的函数:

Cursor c = dbi.DBGrabTable("LEGS",ExerciseListActivity.this);

这是函数定义:

 public Cursor DBGrabTable(String type, Context ctx){

    String query="SELECT * FROM " + DBContract.DBEntry.TABLE_EXERCISES + " WHERE Type=" + type;
    DBContract.DBHelper mDBHelper = new DBContract.DBHelper(ctx);
    SQLiteDatabase rdb = mDBHelper.getReadableDatabase();

    Cursor  c = rdb.rawQuery(query,null);

    if (c != null)
        return c;
    else
        return null;
}

我得到的错误如下:

android.database.sqlite.SQLiteException:没有这样的列:LEGS(代码1):,同时编译:SELECT * FROM Exercises WHERE Type = LEGS

因此我认为它与SQL查询有关。我不确定为什么它说'#34;没有这样的专栏:LEGS"我正在尝试查询我的数据库以查看名为"练习"在列标题" Type"并选择该列中包含单词LEGS的所有项目。

谁能看到我做错了什么?非常感谢提前!!

2 个答案:

答案 0 :(得分:2)

1 - 检查表定义列和表名是否可用。

2 - 如果表和列可用且类型为文本,请更改您的SQL查询并尝试。

String query="SELECT * FROM " + DBContract.DBEntry.TABLE_EXERCISES + " WHERE Type=" + "'" + type + "'";

答案 1 :(得分:0)

使用此查询并确保在空间和倒置逗号的维护中。检查TABLE_EXERCISES中的列名(类型)。

"SELECT * FROM " + DBContract.DBEntry.TABLE_EXERCISES + " WHERE Type = '" + columnValue + "'";

将光标移动到表格的最后一行。

if (cursor != null) {
     if (cursor.getCount() > 0) {
         cursor.moveToFirst();
         do {

        } while (cursor.moveToNext());
    }
}