Android上的SQLite返回错误的结果

时间:2015-06-15 10:05:27

标签: android sqlite android-sqlite

我从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条件以获取所有行,但似乎从我的应用程序查询不会读取行23

我无法找到解决方案。 我们将不胜感激。

修改

  1. 所有列均为TEXT
  2. 我是如何迭代的 数据,实际上光标altready返回错误的行数。
  3. 编辑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();
    

1 个答案:

答案 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);