【发布时间】:2013-05-30 05:11:55
【问题描述】:
我有一个关于在 SQLite 中使用 WHERE 子句的一般性问题。我已经使用过一些 SQLite 并且知道我的方式。但是,我在使用 WHERE 子句时遇到了问题。
我有一个 Android 应用程序,我需要在其中使用 SQLite WHERE 子句执行一些简单的操作。然而,尽管整天都在试验 WHERE 子句,但我还是一无所获。我正在尝试执行非常简单的 SQLite 命令(例如 SELECT name FROM tablename WHERE _id=2 或 DELETE FROM tablename WHERE name='somename')。但是,每次我使用 where 子句时,要么返回 0 行(在 SELECT 的情况下),要么删除 0 行。
表名正确。列名是正确的。 (只要我没有指定 WHERE 子句,我在选择或插入时就没有遇到任何问题。)我确保查询/语句的格式正确。我已经尝试了原始查询/语句以及Android中SQLiteDatabase类提供的方法(我确保对SELECT和DELETE使用正确的方法{例如rawQuery()或query() for SELECT}),但没有任何效果。
我只需要能够使用 WHERE 子句执行简单的查询/语句。有人对正在发生的事情有任何见解吗?
这是创建我正在使用的表的代码:
public static final String TABLE_WORKOUTS = "workouts"
public static final String W_ID = "_id";
public static final String W_WORKOUT_NAME = "workout_name";
public static final String W_EXERICSE_NAME = "exercise_name";
public static final String W_EXERCISE_SETS = "exercise_sets";
public static final String W_EXERCISE_FIRST_ATTRIBUTE = "first_attribute";
public static final String W_EXERCISE_SECOND_ATTRIBUTE = "second_attribute";
public static final String W_EXERCISE_TYPE = "exercise_type";
private static final String createTableWorkouts = "CREATE TABLE " + TABLE_WORKOUTS + " (" + W_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
W_WORKOUT_NAME + " TEXT, " + W_EXERICSE_NAME + " TEXT, " + W_EXERCISE_SETS + " TEXT, " +
W_EXERCISE_FIRST_ATTRIBUTE + " TEXT, " + W_EXERCISE_SECOND_ATTRIBUTE + " TEXT, " + W_EXERCISE_TYPE + " TEXT);";
查询示例:
String workoutName = "Some Workout";
Cursor cursor = datasource.executeRawQuery("SELECT * FROM " + WorkoutDatabase.TABLE_WORKOUTS + " WHERE " + WorkoutDatabase.W_EXERICSE_NAME +
"='" + workoutName + "'", null);
示例记录(_id、锻炼名称、锻炼名称、套数、第一属性、第二属性、锻炼类型): 23、上身、卧推、5、160、5、体重
【问题讨论】:
-
您的表定义没有问题。显示一些示例查询,以及您打算匹配的一些示例记录。
-
@CL。我提供了您要求的代码和示例。
-
exercise_name列中的值为Bench Press,但您正在尝试将其与Some Workout匹配。 -
@CL。哇!我不敢相信我做到了。我确实在这个问题上花了好几个小时。非常感谢!如果你把它作为答案,我会接受它。再次感谢!
标签: android sql sqlite android-sqlite