为什么应该返回结果的ContentProvider查询返回0行?

时间:2013-12-09 16:18:27

标签: android sqlite android-contentprovider

我在我的应用中使用ContentProvider。我尝试使用以下代码进行查询:

String where = MyColumns.USER_ID + " = ?"
        + " and " + MyColumns.DAY + " >= ?"
        + " and " + MyColumns.DAY + " < ?"
        + " and " + MyColumns.STATUS + " <> ?";

Cursor mycursor = getContentResolver().query(DbDefinitions.URI_MY_TABLE,
                    MyColumns.getDisplayColumns(),
                    where,
                    new String[] {
                        String.valueOf(params.mUserId),
                        String.valueOf(today.getTimeInMillis()/1000L),
                        String.valueOf(tomorrow.getTimeInMillis()/1000L),
                        DbDefinitions.STATE_DELETING
                    },
                    MyColumns.DAY + " asc");

通过ContentProvider进行调试,Cursor对象包含mQuery.mSqlmQuery.mBindArgs的以下值:

SELECT _id, user_id, column3, day, column5, status, column7, column8, column9
FROM my_table
WHERE user_id = ? and day >= ? and day < ? and status <> ? ORDER BY day asc;

[1691, 1386576000, 1386662400, STATE_DELETING]

mCount为0。

但是,如果我将此查询复制并粘贴到终端(连接到数据库),我会收到一行:

3 | 1691 | 6 | 1386604595 | 1386597600 | STATE_OK ||一些测试文本| 14

是的,他们正在访问同一个数据库。数据库中的所有其他数据都显示在我的应用程序中。我刚刚添加了这个1表,而这个表中的数据本身并没有回来查询。

查询期间没有例外。

想法?

1 个答案:

答案 0 :(得分:0)

我找出问题所在。当我创建表时,我没有在“day”列中指定列类型。显然,sqlite3让你逃脱了这一点。我假设它默认为文本列

..., day not null, ...