2012-04-23 16 views
5

Desidero ordinare i miei oggetti dati da un caso DAO ORMLite in modo insensibile.Ordine insensibile alle maiuscole/minuscole con omlite e sqlite in Android

Attualmente sto usando il seguente codice SQLite per ordinare il mio caso gli elementi proprietario sensibile:

ownerDao.queryBuilder().orderBy("Name", true).query(); 

vedo here che sqlite supporta case insensitive "ordine da" con il seguente SQL prime:

SELECT * FROM owner ORDER BY Name COLLATE NOCASE 

Qualsiasi modo semplice (più facile di chiamare queryRaw()) di aggiungere il suffisso desiderato?

Potrebbe essere una soluzione alternativa impostare la proprietà columnDefinition su DatabaseField annotation su TEXT COLLATE NOCASE?

+0

hai provato 'orderBy (" Nome COLLATE NOCASE ", vero)' forse passa da quella parte. – zapl

+1

Ci ho pensato, ma anche se funziona, potrebbe rompersi con alcune versioni future di ORMLite. – Diederik

risposta

16

Penso che quello che vuoi è usare il QueryBuilder.orderByRaw(String) method. Sarebbe qualcosa di simile:

ownerDao.queryBuilder().orderByRaw("Name COLLATE NOCASE").query(); 

Avviso stringa raw non non contengono la parte ORDER BY della stringa. Per quotare il javadocs:

Aggiungere la clausola "ORDER BY" SQL raw all'istruzione della query SQL. Questo non dovrebbe includere "ORDER BY".

Il TEXT COLLATE NOCASEcolumnDefinition potrebbe funzionare anche se io non ho alcuna esperienza con l'utilizzo che a tutti.

Inoltre, vorrei non uso la risposta orderBy("Name COLLATE NOCASE", true) poiché tipicamente ORMLite cerca di sfuggire i nomi di colonna e le quotazioni sarebbe nel posto sbagliato.

+0

orderByRaw ("Nome COLLATE NOCASE") funziona come previsto. Grazie Grey – Diederik

Problemi correlati