【问题标题】:How do I get the URI of my SQLite database in my Android app?如何在我的 Android 应用程序中获取我的 SQLite 数据库的 URI?
【发布时间】:2010-12-20 07:54:59
【问题描述】:

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

【问题讨论】:

    标签: android database uri


    【解决方案1】:

    您不使用getContentResolver() 直接访问 SQLite 数据库。与内容提供商合作时,您使用getContentResolver()。您在 SQLiteDatabase 对象上调用 query() 以获取与 SimpleCursorAdapter 一起使用的 Cursor

    【讨论】:

    • 那为什么CursorLoaderUri 呢?
    • @mattblang:这个问题和答案来自 2010 年。Loader 框架在 2010 年不存在。此外,CursorLoader 也不直接访问 SQLiteDatabase,而是做我的答案描述:使用ContentResolver 通过Uri 查询ContentProvider
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      mDataBase.query(TABLE_NAME, columns, null, null, null, null, null);

      其中,TABLE_NAME = 您的 SQLite 表名和列是一个字符串数组,如

      String columns[] = new String[] { "Column1" };

      如果你想要所有列,你可以传递null 作为第二个参数。

      更正:正如其他一些人所提到的,没有 URI。

      【讨论】:

      • 请修正你的答案。这种情况下没有URI。看看 CommonsWare 和 EboMike 是怎么说的。
      • 谢谢。我现在看到答案被否决了,但要清楚 - 这不是我的。
      • 这不是问题的答案。
      猜你喜欢
      • 2011-12-07
      • 2020-10-04
      • 2018-01-10
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      相关资源
      最近更新 更多