У меня есть общий вопрос об использовании предложений WHERE в SQLite. Я работал с некоторыми SQLite и знаю свой путь. Однако у меня возникают проблемы с предложениями WHERE.Использование предложения WHERE в SQLite
У меня есть приложение для Android, в котором мне нужно сделать несколько простых операций с предложением SQLite WHERE. Однако, несмотря на эксперименты с предложением WHERE весь день, я пришел пустым. Я пытаюсь выполнить очень простые команды SQLite (например, SELECT name FROM tablename WHERE _id=2
или DELETE FROM tablename WHERE name='somename'
). Но каждый раз, когда я использую предложение where, я либо возвращаю 0 строк (в случае SELECT), либо удаляет 0 строк.
Название таблицы правильное. Имена столбцов верны. (У меня не было проблем с выбором или вставкой, если я не указываю предложение WHERE.) Я убедился, что запросы/операторы были хорошо сформированы. Я пробовал как сырые запросы/инструкции, так и методы (я обязательно использовал правильные методы для SELECT и DELETE (например, rawQuery()
или query()
для SELECT}), предоставленных от класса SQLiteDatabase
в Android, но ничего не работает ,
Все, что мне нужно, это иметь возможность выполнять простые запросы/утверждения с помощью предложения 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, workout_name, exercise_name, наборы, first_attribute , second_attribute, exercise_type): 23, верхний корпус, скамья, 5, 160, 5, вес
Нет ничего плохого в определении вашей таблицы. Покажите пример запроса и некоторые примеры (-ы), которые вы собираетесь сопоставить. –
@CL. Я выставляю код и примеры, которые вы просили. – Don
Значение в столбце 'exercise_name' -' Bench Press', но вы пытаетесь сопоставить его с 'Some Workout'. –