为了账号安全,请及时绑定邮箱和手机立即绑定

无法从包含意外字符的 sqlite3 文件中检索数据

无法从包含意外字符的 sqlite3 文件中检索数据

墨色风雨 2023-02-24 17:04:33
我有试图从中获取数据的sqlite3 数据库文件。当我尝试在 sqliteBrowser 中打开它时,它会生成表格,但它会忽略文件中的数据,因此我得到空表格。这是文件:localData.sqlite我不知道文件格式是否错误,或者我是否缺少某些功能,我必须运行它。该文件是由第三方应用程序在 Windows 上使用以下代码创建的。文件创建        {            try            {                if (!File.Exists("queueData.sqlite"))                {                    SQLiteConnection.CreateFile("queueData.sqlite");                }                using (SQLiteConnection c = new SQLiteConnection(connection))                {                    c.Open();                    using (SQLiteCommand cmd = new SQLiteCommand("create table if not exists vehicles (data TEXT)", c))                    {                        cmd.ExecuteNonQuery();                    }                    using (SQLiteCommand cmd = new SQLiteCommand("create table if not exists vehiclesMQTT (data TEXT)", c))                    {                        cmd.ExecuteNonQuery();                    }                    using (SQLiteCommand cmd = new SQLiteCommand("create table if not exists faces (data TEXT)", c))                    {                        cmd.ExecuteNonQuery();                    }                    using (SQLiteCommand cmd = new SQLiteCommand("create table if not exists facesMQTT (data TEXT)", c))                    {                        cmd.ExecuteNonQuery();                    }                    c.Close();                }            }            catch (Exception ex)            {                AdLogsManager.instance.writeErrorMessage("Creating DB and Table: " + ex.Message,"", "", 7001);            }        }如果有人能帮助我解决问题或找到获取数据的方法,我将不胜感激。
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

完全没有保证!

您的数据库已损坏,或者以某种方式删除了记录。

但是,您仍然可以在文本编辑器中打开文件并看到很多记录,例如:

...{"channel":"app-emit","payload":{"type":"vehicle","deviceId":"d4f9bb04b6d5","time":1595510864502,"appName":"vehicle","appVersion":"1.0.1","data":{"count":1,"speed":0.0,"zoneId":"inbound","time":1595510864502}}}...

我不知道它们属于哪张桌子,也不知道它们是真实的还是过时的,甚至不知道丢失了多少。

使用此方法,可以恢复4087条记录:https ://justpaste.it/38j03

进一步了解您的应用程序应该有助于您评估它们是否有用。

编辑:使用的方法:

我使用十六进制/文本编辑器 (MadEdit) 来:

  1. 在之前放置一个中断{"channel":(将十六进制 7B226368616E6E656C223A 替换为0A 7B226368616E6E656C223A)

  2. 在之后休息(用 7D7D7D 0A}}}替换十六进制 7D7D7D )

  3. 删除了每一次出现的空值(用什么替换十六进制 00)

然后将所有内容复制并粘贴到电子表格应用程序 (Excel) 中,因此可以进行一些排序和过滤。

更好的方法:在 Word 中打开,进行相同的替换({"channel":to^p"channel":}}}to }}}^p),然后粘贴到 Excel。


查看完整回答
反对 回复 2023-02-24
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信