2012-04-23 33 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