这条线有什么问题?
qB.where().ne(AppConstant.SYNC_STATUS_FIELD_NAME, strSyncOK);
我做了一个简单的地方,与ORMlite不相等,并且0结果没有错误:
完整代码:
dao = DaoManager.createDao(connectionSource, clazz);
QueryBuilder qB = dao.queryBuilder();
SelectArg strSyncOK = new SelectArg(AppConstant.SYNC_OK); // ==> "OK" string
qB.where().ne(AppConstant.SYNC_STATUS_FIELD_NAME, strSyncOK);
List<T> var = dao.query(qB.prepare());
当我删除该行
qB.where().ne(AppConstant.SYNC_STATUS_FIELD_NAME, strSyncOK);
一切都好。
当该行存在时,未找到任何结果,我检查数据并且AppConstant.SYNC_STATUS_FIELD_NAME的所有数据均为空
参数:
public static final String SYNC_OK = "OK";
输出:
SELECT * FROM `Evento` WHERE `syncStatus` <> ?
我错过了什么?
答案 0 :(得分:2)
我相信这是一个Sqlite常见问题,而不是ORMLite问题。如果您直接尝试:
select col1 as col from tablename
union all
select col2 from tablename
...
现在我们来看看查询:
sqlite> CREATE TABLE table1 (foo int, bar string);
sqlite> INSERT INTO table1 (foo, bar) VALUES (1, 2);
sqlite> INSERT INTO table1 (foo, bar) VALUES (2, null);
注意当我们说bar!=一个值时,空字段不匹配:
sqlite> SELECT * FROM table1 WHERE foo == 1;
1|2
sqlite> SELECT * FROM table1 WHERE foo == 2;
2|
但是当我们使用Sqlite的sqlite> SELECT * FROM table1 WHERE bar != 3;
1|2
运算符时, 匹配IS NOT
:
null
我认为这是由Sqlite's null handling引起的,尽管我无法在其上找到具体的文档。 Sqlite's IS NOT documentation提到它有点但又没有具体提及。
的参考