我有一个名为“myTestDB”的数据库的Android应用程序,其中包含一个名为“list_items”的表。我想使用Cursor getContentResolver().query()方法获取一个游标,以添加到SimpleCursorAdapter中。query()方法的第一个参数是URI,我不确定URI应该长什么样。
您不应直接使用 getContentResolver()
访问 SQLite 数据库。当与内容提供者���起工作时,您使用 getContentResolver()
。您可以在 SQLiteDatabase
对象上调用 query()
来获取 Cursor
,以便与 SimpleCursorAdapter
一起使用。
数据库没有Uri(除了它所在的文件)。通过内容提供程序管理的数据有一个Uri。如果您想使用内容解析器执行查询,则需要首先编写内容提供程序。
如果您不想这样做,只需使用SQLiteDatabase的query
函数-它返回一个Cursor,您可以将其传递给SimpleCursorAdapter。
这是相当简单的方法调用,看起来像这样:
mDataBase.query(TABLE_NAME, columns, null, null, null, null, null);
其中,TABLE_NAME = 您的SQLite表名称,而columns是一个字符串数组,例如
String columns[] = new String[] { "Column1" };
如果您想要所有列,可以将第二个参数传递为null
。
更正: 正如其他一些人所提到的,没有URI。
URI
。看看CommonsWare和EboMike说了什么。 - Vit Khudenko
CursorLoader
有一个Uri
呢? - theblangLoader
框架在那时并不存在。另外,CursorLoader
也不会直接访问SQLiteDatabase
,而是像我的回答所描述的那样:使用ContentResolver
通过URI
查询ContentProvider
。 - CommonsWare