Je travaille sur une base de données avec SQLLITE dans une application Android
Je veux récupérer des données SM en utilisant une clause similaire
Ex: Il devrait donner à tous les noms de SongName commençant par match_str mais sa ne fonctionne pas. Pourquoi? p> p> p>
7 Réponses :
Pas besoin pour le signe égal et vous devriez pouvoir inclure le? DROIT dans la chaîne sans besoin d'opérateur +. La clause WHERE devrait être juste: et si MU est trop courte est correct et que vous ne voulez que partir de ... p> "SongName LIKE '?%'"
Je pense que vous devez laisser tomber les citations simples autour de ? Code> pour en faire un espace réservé plutôt qu'un littéral à chaîne.
Merci Mu, tu as raison. Je n'ai pas vraiment utilisé le? et la sélection argument dans mes propres requêtes, donc je n'étais pas clair à 100% sur leur usage ...
hi vous obtenez une exception lors de l'exécution de la requête ci-dessus. Essayez en supprimant le symbole "=" face au point d'interrogation dans la condition similaire. Sinon essayez d'utiliser
db.rawQuery(sql, selectionArgs)
Essayez ceci:
String[] args = new String[1];
args[0] = "%"+song+"%";
Cursor friendLike = db.rawQuery("SELECT * FROM songs WHERE SongName like ?", args);
Je pense que vous voulez args [0] = chanson + "%"; code> comme ils disent "commençant par ...".
C'est vrai, n'utilisez qu'un% après l'argument pour obtenir le commence par b>
Grand ça a fonctionné bien ... Cependant, je n'ai pas compris pourquoi la solution ci-dessus n'a pas fonctionné.
Je développe une application Android avec une éditeur qui permet aux utilisateurs
Beau travail, aide beaucoup d'utilisateurs suspendus ici coincé dans le problème comme
Ceci:
String[] a = new String[1];
a[0] = match_str + '%';
Cursor c = myDB.rawQuery("SELECT * FROM songs WHERE SongName LIKE ?", a);
Je suis dvlping une application andr avec un editext qui permet aux utilisateurs de rechercher des chansons. Je veux utiliser instantané srch. Je veux dire que je veux les résultats de la recherche dans mon application de mon application instantanément en tant que types d'utilisateurs dans la case EditText dans l'ordre de la plupart chansons visitées. J'utilise une db de chansons pour cela, mais je crains que cela puisse être trop lent.Besides je veux que ma liste EditText ralentit et attends que l'utilisateur complète son texte que j'utilise System.Currenttimemillis () comme le marqueur ND attend. 5 sec bt sa ne pas attendre. Je suis nouveau à Android et ne sait pas le subi qu'il fonctionnera ou non .. pls me suggère de smart
@ user712771: Cela ressemble à une nouvelle question qui serait mieux répondu par une personne qui sait Android mieux que moi.
Merci, mais j'ai vraiment pensé que tu pouvais aider ... Je pense que je devrais le demander comme une question distincte ..
@ user712771: Je ne suis pas si génial avec Android, j'essaie simplement de vous aider à comprendre ce que vous avez mal fait, Enseigner à un homme de pêcher et tout ça.
Grande explication, aide à comprendre pourquoi cela fonctionne et une voie directe ne le fait pas.
Cela fonctionne parfaitement pour moi ...
"Songname LIKE ? "...
cursor = database.rawQuery(query, new String[]{"%" + searchTerm + "%"});
Si vous souhaitez utiliser Query () Code> au lieu de RAWQUERY () CODE>, vous pouvez le faire comme suit: // searchString is the string to search for
final String whereClause = "MyColumnName" + " like ?";
String[] whereArgs = new String[]{"%" + searchString + "%"};
Cursor cursor = sqLiteDatabase.query("MyTableName",
null, // columns
whereClause, // selection
whereArgs, // selectionArgs
null, // groupBy
null, // having
null, // orderBy
null); // limit
Un moyen simple est d'utiliser l'opérateur de concaténate || donc il n'y a pas besoin de modifier le match_str. p>