我要从SQLite db文件恢复已删除的记录和删除的数据,
我用文本编辑器检查我的db文件,我看到丢弃的数据仍然在那里。
我使用的是SQLite3.dll (in c#),但是我找不到打开数据库的属性,删除数据或.
有图书馆可以帮我吗?还是从sqlite文件中恢复数据的简单代码?
编辑1:
我试图为sqlite找到一个数据恢复库或程序。经过多次搜索,我找到了http://www.devart.com/dotconnect/sqlite/docs/Devart.Data.SQLite~Devart.Data.SQLite.SQLiteDump.html
SQLiteConnection.Open();
SQLiteDump sqSqlDump = new SQLiteDump();
sqSqlDump.Connection = SQLiteConnection1;
sqSqlDump.IncludeDrop = true; //<<-- check here
sqSqlDump.Backup();
StreamWriter stream = new StreamWriter("d:\\dump.dmp");
stream.WriteLine(sqSqlDump.DumpText);
stream.Close(); 我可以使用IncludeDrop属性将数据备份给我,但是这个库不是免费的,我不能使用它。我喜欢找免费的图书馆或程序..。
发布于 2014-02-07 13:12:18
当您删除记录时,SQLite会临时删除数据。您应该实现一个只将数据标记为已删除的模型,或者是存储所有版本数据的系统。您可以通过添加字段来标记这些属性来做到这一点。然后,当您选择时,您可以更改它们以说明新字段的功能。
比如:
select * from mytable where mytable.deleted<>true and etc=etcSQLite将所有的数据存储在一个文件中。如果您有一个文件系统备份服务到位,您可以获得旧版本的数据库。
当SQLite删除记录时,可能是文件中留下的鬼数据。这些数据都是垃圾,不会让您在删除之前可靠地回到前一点。
SQLite db文件是二进制文件,如果保存它将被破坏,请小心使用文本编辑器编辑它!
发布于 2014-02-07 13:38:37
至少可以部分地雇用一家(非常昂贵的)数据恢复公司,通过分析二进制文件来恢复数据。您可能无法自己做这件事,因为正如其他人所说的那样,“删除记录时SQLite将永久删除数据”,这是正确的,因为SQLite中的数据删除操作涉及覆盖文件中的元数据,描述数据在何处以及如何与其他数据相关。
部分数据可能仍然在文件中,但是:
如果您在接下来的几个月中没有什么可做的,您可以从分析SQLite文件结构开始,并应用这些知识来尝试猜测数据在被删除之前可能在文件中的位置(意思是,它的元数据被覆盖了),然后执行恢复。您需要从这里开始:http://www.sqlite.org/fileformat.html。
发布于 2014-02-07 12:55:17
我认为这是不可能的,见文档。我不知道你在文本编辑器中看到了什么数据。
https://stackoverflow.com/questions/21628240
复制相似问题