11
votes

Comment faire une requête insensible à la casse avec contentResolver dans Android?

Mon objectif est d'obtenir toutes les lignes de DB natif avec une adresse e-mail spécifique sur Android Gingerbread et ci-dessus.

Cette requête obtient uniquement les lignes dans lesquelles le cas correspond également. P>

Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
            new String[] {Contacts._ID}, ContactsContract.CommonDataKinds.Email.ADDRESS + "=?",
            new String[] {email}, null);


2 commentaires

Peut-être remplacer "=?" avec "Comme?" / code> fonctionne.


Est-ce "Votre" fournisseur de contenu (vous avez accès à son SRC)?


3 Réponses :


8
votes

S'il vous plaît essayer (je suppose que le courrier est un objet de chaîne): xxx

ou xxx


0 commentaires

21
votes

Essayez également

Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
            new String[] {Contacts._ID}, ContactsContract.CommonDataKinds.Email.ADDRESS + "=? COLLATE NOCASE",
            new String[] {email}, null);


2 commentaires

Cela évite la surcharge de la fonction inférieure ; Et il peut utiliser un index si l'index a également été créé avec associer NOCASE .


Collate NOCASE ne fonctionne pas pour tous les paramètres régionaux, par exemple, cela ne fonctionne pas pour Cyrilic



0
votes
Cursor cursor = this.db.query("UserTbl", new String[] {"UserId",
                        "Username", "Password" },
                        "Username = ? COLLATE NOCASE AND Password = ? COLLATE NOCASE", new String[] { userNameString,
                                passwordString }, null, null, null);

1 commentaires

Comment est-ce une réponse utile? Cela n'utilise pas de résolution de contenu comme dans la question, et même la Colate NOCASE a déjà été suggérée dans la réponse la plus élevée.