我有一个关于在 SQLite 中使用 WHERE 子句的一般性问题。我已经使用过一些 SQLite 并且知道我的方式。但是,我在使用 WHERE 子句时遇到了问题。
我有一个 Android 应用程序,我需要在其中使用 SQLite WHERE 子句执行一些简单的操作。然而,尽管整天都在试验 WHERE 子句,但我还是一无所获。我正在尝试执行非常简单的 SQLite 命令(例如SELECT name FROM tablename WHERE _id=2
or DELETE FROM tablename WHERE name='somename'
)。但是,每次我使用 where 子句时,我要么返回 0 行(在 SELECT 的情况下),要么删除 0 行。
表名是正确的。列名是正确的。(只要我没有指定 WHERE 子句,我在选择或插入时就没有任何问题。)我确保查询/语句的格式正确。我已经尝试了原始查询/语句以及Android 中的类提供的方法(我确保对 SELECT 和 DELETE {例如rawQuery()
或query()
用于 SELECT} 使用正确的方法) ,但没有任何效果。SQLiteDatabase
我所需要的只是能够使用 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、体重