2012-04-23 68 views
5

我想從ORMLite DAO大小寫不區分大小寫的數據對象。在android中使用ormlite和sqlite忽​​略大小寫順序

目前我使用下面的sqlite的代碼靈敏爲了我的主人項目情況:

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

我看到here是SQLite的「通過令」與下面的原始SQL支持不區分大小寫:

SELECT * FROM owner ORDER BY Name COLLATE NOCASE 

任何簡單的方法(比調用queryRaw()容易)添加所需的後綴?

可以採用其他解決方案將DatabaseField annotationcolumnDefinition屬性設置爲TEXT COLLATE NOCASE

+0

你嘗試過'orderBy(「Name COLLATE NOCASE」,true)'也許它是通過這種方式。 – zapl 2012-04-23 13:13:38

+1

我曾考慮過這個問題,但即使這樣做,它可能會與未來版本的ORMLite打破。 – Diederik 2012-04-23 13:32:10

回答

16

我想你想要的是使用QueryBuilder.orderByRaw(String) method。它看起來是這樣的:

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

通知原始字符串不包含字符串的ORDER BY一部分。引用javadocs

將原始SQL「ORDER BY」子句添加到SQL查詢語句中。這不應該包括「ORDER BY」。

TEXT COLLATE NOCASEcolumnDefinition可能工作,雖然我根本沒有任何使用經驗。

另外,我想使用orderBy("Name COLLATE NOCASE", true)答案因爲通常ORMLite試圖逃跑列名和引號是放錯了地方。

+0

orderByRaw(「Name COLLATE NOCASE」)按預期工作。謝謝格雷 – Diederik 2012-04-24 06:40:32