【问题标题】:My db records are not showing in sqlite browser我的数据库记录没有显示在 sqlite 浏览器中
【发布时间】:2018-03-19 09:46:02
【问题描述】:

我正在开发一个带有数据库操作的 android 应用程序。出于调试目的,我从enter link description here 安装了 SQLite 浏览器。我的问题是,当我从模拟器导出我的 db 文件并在浏览器中打开它时,它只显示元数据而不是我的实际应用数据。enter image description here

是的,我已经使用 Android 设备管理器从正确的位置导出了 db 文件。enter image description here

如您所见,在数据库文件夹中还创建了一些其他文件(journal & .file)。 所以我想知道是否有人知道最近数据在 SQLite DB 中的存储方式是否有任何变化。我正在使用 Android Studio 3.0.1。

提前感谢您的帮助。

这是带有包名的新截图。enter image description here

来自 Common SQLite 实用程序的日志

D/SQLITE_CSU: logCursorColumns invoked. Cursor has the following 4 columns.

D/SQLITE_CSU: Column Name 1 is id

D/SQLITE_CSU: Column Name 2 is title

D/SQLITE_CSU: Column Name 3 is uid

D/SQLITE_CSU: Column Name 4 is address

D/SQLITE_CSU: logCursorData Cursor has 1 rows with 4 columns.

D/SQLITE_CSU: Information for row 1 offset=0
                For Column id Type is INTEGER value as String is 1 value as long is 1 value as double is 1.0

                For Column title Type is STRING value as String is BBC value as long is 0 value as double is 0.0

                For Column uid Type is STRING value as String is PajUFVIZvKbNWAHAgdJ9xpf6gi33 value as long is 0 value as double is 0.0

                For Column address Type is STRING value as String is http://feeds.bbci.co.uk/news/world/rss.xml value as long is 0 value as double is 0.0

这里是 logDatabaseInfo 日志“-

D/SQLITE_CSU: DatabaseList Row 1 Name=main File=/data/data/com.rss.feedster.rss_feedster/databases/rssFeeds
D/SQLITE_CSU: Database Version = 3
D/SQLITE_CSU: Table Name = android_metadata Created Using = CREATE TABLE android_metadata (locale TEXT)
D/SQLITE_CSU: Table = android_metadata ColumnName = locale ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table Name = feeds Created Using = CREATE TABLE feeds(id INTEGER PRIMARY KEY,title TEXT,uid TEXT,address TEXT)
D/SQLITE_CSU: Table = feeds ColumnName = id ColumnType = INTEGER Default Value = null PRIMARY KEY SEQUENCE = 1
D/SQLITE_CSU: Table = feeds ColumnName = title ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table = feeds ColumnName = uid ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table = feeds ColumnName = address ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table Name = user_info Created Using = CREATE TABLE user_info(id INTEGER PRIMARY KEY,uid TEXT,nickname TEXT,email TEXT,age TEXT,mobile TEXT,password TEXT,gender TEXT,photoURL TEXT)
D/SQLITE_CSU: Table = user_info ColumnName = id ColumnType = INTEGER Default Value = null PRIMARY KEY SEQUENCE = 1
D/SQLITE_CSU: Table = user_info ColumnName = uid ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table = user_info ColumnName = nickname ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table = user_info ColumnName = email ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table = user_info ColumnName = age ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table = user_info ColumnName = mobile ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table = user_info ColumnName = password ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table = user_info ColumnName = gender ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
D/SQLITE_CSU: Table = user_info ColumnName = photoURL ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0

【问题讨论】:

  • 从你显示的内容来看,有一个表,即数据库中的 Messages 表。单击 Browse Data 选项卡,然后从下拉选择器中选择 Messages 表将显示该表中是否有任何数据。日志文件是 SQLite 对 DB 的回滚文件。
  • 请切换到Browser data标签预览数据。

标签: android sqlite


【解决方案1】:

我相信你只是找错地方了,点击Browse Data Tab然后选择Messages表格会显示是否有数据。 p>

原因是您正在查看数据库结构,这向您显示了将/用于创建它们的表和 SQL,以及列和列定义的 SQL。

拥有名为 android_metadata 的表很可能表明该数据库来自 Android 设备,而不是来自其他来源,即您只能在 Android 设备上找到它。

您的屏幕截图显示有一个名为 Messages 的表,它不是自动生成的,也不是由 SQLite 创建的。根据屏幕截图,它至少有两列。一个名为 type 并具有定义的 INTEGER 列类型以及 NOT NULL 约束,另一列名为 entry 并具有 BLOB 的 column_type。

这是一个从模拟器复制的类似数据库,显示当您查看数据库结构时(填充 1 行)如何显示(朋友是表,列已展开)。

请注意,“浏览数据”表已突出显示并且有一个箭头指向它。单击此按钮将显示如下内容:-

这是浏览 android_metadata 表的数据(只有 1 行 1 列)。在突出显示的表格的右侧有一个下拉菜单,单击它并选择 Messages 表格。您的数据将被显示,例如(显然这是用于 Friends 表):-

  • 表格有 1 行 6 列
    • 列 _id 的值为 1
    • 列 _name 的值为 测试名称
    • 等等

编辑关于调试信息。

很明显,您打算从模拟器中复制/导出的表不是您在 DB Browser for SQLite 中查看的数据库。您通过提供的实用程序提供信息的数据库是:-

/data/data/com.rss.feedster.rss_feedster/databases/rssFeeds

因此,您要导出副本然后在 DB Browser for SQLite 中打开该文件。

它不是 google_app_measurement_local.db

我认为问题基本上是您假设数据库必须具有 .db 文件扩展名。 .db(文件扩展名)不会影响纯粹用于指示文件可能的类型的数据。

毫无疑问,如果您打开上述文件,您将看到数据和结构与您预期的一样。注意要查看文件选择文件名输入右侧的所有文件。

以下示例显示了一个导出/复制为 db1.rumplestiltskin 的文件,然后在 DB Browser for SQLite 中打开:-

修复

在设备监视器中导出/复制/保存文件/data/data/com.rss.feedster.rss_feedster/databases/rssFeeds,然后在DB Browser for SQLite中打开该文件;请注意,如果它没有 .db 或 .sqlite 文件扩展名,那么您必须从 File 中选择 All Files在文件名输入右侧键入选择器,以便能够从文件浏览器中选择文件。

也许阅读过Filename extension,它更详细地解释了文件扩展名。

【讨论】:

  • 我看到了“浏览数据”选项卡,但没有找到我的表格。我还没有创建该消息表。无论如何感谢您的努力。
  • @dissecttech 所以我怀疑您的数据库名称不是 rssFeeds。如果是,那么您可能需要担心这个幻像 Messages 表是如何创建的。我建议编辑您的问题以包含数据库名称和包名称,因为看起来您很可能在错误的位置寻找实际数据库本身。
  • 实际上,如果您看到我没有打开“rssFeeds”文件,因为它是(.File)扩展名,我已经打开了“google_app_measurement_local.db”文件。我的包名是“com.rss.feedster.rss_feedster”。我正在附上新的屏幕截图。
  • 同样适用于 Messages 表的来源。但是,可能只是导出没有问题,但真正的问题是您没有要导出的数据。或许可以根据 [是否有任何方法可以帮助解决常见的 SQLite 问题? ](stackoverflow.com/questions/46642269/…)
  • 我可以使用您在上述评论中提供的实用程序查看数据。我已经用它的日志更新了这个问题。请检查它..
猜你喜欢
  • 1970-01-01
  • 2016-09-15
  • 2016-10-21
  • 2012-08-19
  • 1970-01-01
  • 2016-02-14
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多