我有一个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的所有项目。
谁能看到我做错了什么?非常感谢提前!!
答案 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());
}
}