12
votes

ne peux pas utiliser la clause de l'application Android

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: xxx

Il devrait donner à tous les noms de SongName commençant par match_str mais sa ne fonctionne pas. Pourquoi?


0 commentaires

7 Réponses :


1
votes

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: xxx pré>

et si MU est trop courte est correct et que vous ne voulez que partir de ... p>

"SongName LIKE '?%'"


2 commentaires

Je pense que vous devez laisser tomber les citations simples autour de ? 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 ...



0
votes

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)


0 commentaires

9
votes

Essayez ceci:

String[] args = new String[1];
args[0] = "%"+song+"%";
Cursor friendLike = db.rawQuery("SELECT * FROM songs WHERE SongName like ?", args);


5 commentaires

Je pense que vous voulez args [0] = chanson + "%"; comme ils disent "commençant par ...".


C'est vrai, n'utilisez qu'un% après l'argument pour obtenir le commence par


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



25
votes

Ceci:

String[] a = new String[1];
a[0]       = match_str + '%';
Cursor   c = myDB.rawQuery("SELECT * FROM songs WHERE SongName LIKE ?", a);


5 commentaires

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.



0
votes

Cela fonctionne parfaitement pour moi ...

"Songname LIKE ? "...

cursor = database.rawQuery(query, new String[]{"%" + searchTerm + "%"});


0 commentaires

0
votes

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


0 commentaires

0
votes

Un moyen simple est d'utiliser l'opérateur de concaténate || xxx

donc il n'y a pas besoin de modifier le match_str. xxx

de https://stackoverflow.com/a/46420813/908821


0 commentaires