我该如何在我的安卓应用中获取SQLite数据库的URI?

8

我有一个名为“myTestDB”的数据库的Android应用程序,其中包含一个名为“list_items”的表。我想使用Cursor getContentResolver().query()方法获取一个游标,以添加到SimpleCursorAdapter中。query()方法的第一个参数是URI,我不确定URI应该长什么样。

3个回答

4

您不应直接使用 getContentResolver() 访问 SQLite 数据库。当与内容提供者���起工作时,您使用 getContentResolver()。您可以在 SQLiteDatabase 对象上调用 query() 来获取 Cursor,以便与 SimpleCursorAdapter 一起使用。


为什么CursorLoader有一个Uri呢? - theblang
@mattblang:这个问题和答案都是来自2010年。Loader框架在那时并不存在。另外,CursorLoader也不会直接访问SQLiteDatabase,而是像我的回答所描述的那样:使用ContentResolver通过URI查询ContentProvider - CommonsWare

1

数据库没有Uri(除了它所在的文件)。通过内容提供程序管理的数据有一个Uri。如果您想使用内容解析器执行查询,则需要首先编写内容提供程序。

如果您不想这样做,只需使用SQLiteDatabase的query函数-它返回一个Cursor,您可以将其传递给SimpleCursorAdapter。


-1

这是相当简单的方法调用,看起来像这样:

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
谢谢。我现在看到答案被踩了,但是要明确一点 - 这不是我写的。 - Vit Khudenko
这不是问题的答案。 - azizbekian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接