我从Android APP查询SQLite数据库时遇到了一些麻烦。
这是我查询的表格:
id | customerCode | invoiceNumber | openAmount | grossAmount
这是数据:
1 | 1 | 1 | -1.00 | -1.00
2 | 1 | 1 | 1.00 | 1.00
3 | 1 | 1 | 10.00 | 10.00
4 | 1 | 2 | 0.00 | 20.00
5 | 1 | 3 | 0.00 | 30.00
我尝试仅提取openAmount != "0.00"
的行并且查询为:
String whereClause = MyTable.CUSTOMER_CODE + " = ? "
+ "and " + MyTable.OPEN_AMOUNT + " != \"0.00\"";
Cursor cur = mDb.query(MyTable.TABLE, null, whereClause, new String[]{customerId}, null, null, null);
我期望的结果是查询从我的表中获取前3行,这是我从外部应用程序(如SQLite Magic)查询数据库时获得的结果。
但是......当我从我的应用程序运行查询时,我只获得openAmount = -1.00
行。
我尝试了很多解决方案,例如更改where条件以获取所有行,但似乎从我的应用程序查询不会读取行2
和3
。
我无法找到解决方案。 我们将不胜感激。
修改
TEXT
。 编辑2
我通过结果Cursor循环,这就是我的工作方式:
List<MyObject> list = new ArrayList<>();
MyObject obj;
//initialization of columnsIndex
//int idx1 = cur.getColumnIndex(columnName);
if (cur.moveToFirst()) {
do {
obj = new MyObject();
//set obj data
list.add(obj);
} while (cur.moveToNext());
}
cur.close();
答案 0 :(得分:0)
试试这样:
String whereClause = MyTable.CUSTOMER_CODE + " = ? "
+ "and " + MyTable.OPEN_AMOUNT + " NOT LIKE '0.00'";
Cursor cur = mDb.query(MyTable.TABLE, null, whereClause, new String[]{customerId}, null, null, null);