我在我的应用中使用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.mSql
和mQuery.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表,而这个表中的数据本身并没有回来查询。
查询期间没有例外。
想法?
答案 0 :(得分:0)
我找出问题所在。当我创建表时,我没有在“day”列中指定列类型。显然,sqlite3让你逃脱了这一点。我假设它默认为文本列
..., day not null, ...