À l'aide de la clause where dans SQLite

J'ai une question d'ordre général sur l'utilisation de clauses where dans SQLite. J'ai travaillé avec SQLite certains et sais mon chemin autour. Cependant, je vais avoir des problèmes avec les clauses where.

J'ai une application Android dans lequel je suis besoin de faire quelques opérations simples avec l'SQLite clause where. Toutefois, en dépit de l'expérimentation avec la clause where toute la journée, j'ai trouvé vide. Je suis en train d'effectuer de très simple SQLite commandes (par exemple, SELECT name FROM tablename WHERE _id=2 ou DELETE FROM tablename WHERE name='somename'). Mais, à chaque fois que je utiliser la clause where I soit 0 lignes retournées (dans le cas d'un SELECT) ou avez 0 de lignes supprimées.

Le nom de la table est correcte. Les noms de colonne sont corrects. (Je n'ai pas eu un seul problème de la sélection ou de l'insertion, tant que je ne spécifiez pas une clause where.) J'ai fait en sorte que les requêtes/déclarations ont été bien formés. J'ai essayé les deux premières requêtes/consolidés ainsi que les méthodes (j'ai fait en sorte d'utiliser les bonnes méthodes pour SÉLECTIONNER et SUPPRIMER (par exemple, rawQuery() ou query() pour SÉLECTIONNER}) fourni à partir de la SQLiteDatabase classe dans Android, mais rien a travaillé.

Tout ce que je besoin est d'être en mesure d'effectuer des requêtes simples/instructions à l'aide de la clause where. Quelqu'un aurait-il importe de mieux comprendre ce qui se passe?

Voici le code pour créer la table que j'utilise:

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);";

Exemple de requête:
String workoutName = "Some Workout";
Cursor cursor = datasource.executeRawQuery("SELECT * FROM " + WorkoutDatabase.TABLE_WORKOUTS + " WHERE " + WorkoutDatabase.W_EXERICSE_NAME +
"='" + workoutName + "'", null);

Exemple d'enregistrement (_id, workout_name, exercise_name, jeux, first_attribute, second_attribute, exercise_type): 23, la partie Supérieure du Corps, Banc de Presse, 5, 160, 5, Poids

  • Il n'y a rien de mal avec votre définition de la table. Montrer un exemple de requête, et un exemple de dossier(s) que vous avez l'intention de match.
  • J'ai mis le code et les exemples que vous avez demandé.
  • La valeur de la exercise_name colonne est Bench Press, mais vous essayez de faire correspondre avec Some Workout.
  • Wow! Je ne peux pas croire que je l'ai fait. J'ai littéralement passé des heures et des heures sur ce problème. Merci beaucoup! Si vous mettez que comme une réponse, je vais l'accepter. Merci encore!
InformationsquelleAutor Don | 2013-05-30