惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - guojin

ASP.NET整理:Cookie,Application,Session,页面生命周期 安装 SQL SERVER 2008 必须使用 "角色管理工具" 错误 的 解决方案 (转) 经典算法和OJ网站(开发者必备-转) 新概念英语第三册课后题答案 设置服务器定时重启 http status code 数据库中索引的优缺点(转) 几类常用Case工具介绍(有点老,但还是具有参考性,对应找较新版本就是了) - guojin PowerDesigner建模工具简介(转) 如何查看一个网页打开速度 reset sql server express sa password 服务器维护tips (转)11款网站服务器监测通知工具 sql server 2000 数据同步(2) sql server2000 数据同步 asp.net页面中 回车触发提交事件(转) - guojin - 博客园 登陆界面设计得不错 Fetion分析之二:服务器地址从何而来——变态的配置文件(转) Google黑板报上连载的长文
飞信Fetion历史数据库研究(History.dat)——嵌入式数据库SQLite介绍(转)
guojin · 2009-04-20 · via 博客园 - guojin

最近使用飞信,但发现不能将历史消息像QQ消息那样导出,感觉很不爽。
当在飞信中设置(操作–选项–个人设置–消息历史)了保存历史消息之后,飞信的历史消息数据保存的路径如下:
2008的消息存储路径:
vista下:
C:\Users\用户名\AppData\Roaming\Fetion\飞信号\history.dat
Xp 下 :
c:\documents and setttings\用户名\application data\fetion\飞信号\history.dat

2006的消息存储路径:
Vista下:
C:\Users\用户名\AppData\Roaming\Fetion\438456281\History\
Xp 下
c:\documents and setttings\用户名\application data\fetion\438456281\xxx

直接使用Notepad或者其他文本编辑器打开History.dat文件,全是乱码。后来,发现在飞信目录下有一个Sqlite相关的dll文件,猜想这个文件可能是sqlite的数据库文件,于是从网络上下载了一个Sqlite数据库的浏览器,打开这个数据库需要密码,密码就是您的飞信号。
打开数据库后,发现数据结构还是比较简单的。只要一个简单的SQL,就可以导出数据。
在网上下载了一个代码,可以对Sqlite数据库进行一些简单的操作,但可惜的是仍没有导出全部信息的功能,准备改进一下,希望能够实现想要的功能。(代码下载)

相关知识:
SQLite是一个开源数据库,现在已变得越来越流行,它的体积很小,被广泛应用于各种不同类型的应用中。

什么是SQLite?
SQLite的官方网站上是这样定义SQLite的:SQLite是一个软件库,用于实现自包含(http://www.sqlite.org/selfcontained.html)、非服务式(http://www.sqlite.org/serverless.html)、零配置(http://www.sqlite.org/zeroconf.html)、事务化(http://www.sqlite.org/transactional.html)的SQL数据库引擎。
SQLite是一个嵌入式SQL数据库引擎,与其它大多数SQL数据库不同的是,SQLite没有独立的服务进程。SQLite直接读写原始的磁盘文件,一个拥有多个表、索引、触发器和视图的完整SQL数据库就包含在一个独立的磁盘文件中。数据库文件的格式是跨平台的,你可以在32位和64位系统之间、甚至在Big-Endian(http://en.wikipedia.org/wiki/Endianness)和Little-Endian(http://en.wikipedia.org/wiki/Endianness)(译者注:这是两种不同的字节排序方式,Big-Endian是指一个word中的高位Byte是放在内存word区域的低地址处,而Little-Endian则与之相反)两种不同的架构间自由地拷贝数据库,这一特性让SQLite成为应用文件格式(http://www.sqlite.org/whentouse.html#appfileformat)的一种流行选择。SQLite不能替代Oracle,但可以考虑作为fopen()的替代方法。
SQLite已经是世界上布署得最广泛的SQL数据库引擎,被用在无以计数的桌面电脑应用中,还有消费电子设备中,如移动电话、掌上电脑和MP3播放器等。SQLite的源码就放在公有领域(即WikiPedia的public domain)中。
SQLite最早是应用在Linux和OSX平台上的,但对数据库需求较少的Windows应用而言,它是替代SQL Express和Access数据库运行于.NET之上的一个可行且实用的选择。

有一篇来自开发者Mike Duncan(http://www.mikeduncan.com/)的文章,给出了一个在3分钟内就可将SQLite安装到.NET上的指南。这个指南非常有用,读完它你就可以使用一个轻量级的数据库来处理你丢给它的许多任务。
3分钟的指南
指南是从第一次下载SQLite开始的:
尽管你可以通过SQLite下载页(http://www.sqlite.org/download.html)获得Windows的通用库,但我还是打算建议你从sourceforge获取SQLite的ADO.NET 2.0数据提供者(http://sourceforge.net/projects/sqlite-dotnet2),我并不是说它是最高效的版本(它有一个ADO包装层以及附带的无用功能),但它确实是一个非常容易上手的版本,可能值得长期使用。
找出DLL:
将找到的DLL(System.Data.SQLite.DLL)拷贝到你的项目中,并添加引用。
下载和安装一个SQLite GUI工具,SQLiteMan(http://sqliteman.com/index.php/page/4.html)有一个非常出色的windows版本,指南上是这样说的:
我一直在使用的工具名为“SQLite Administrator”(http://sqliteadmin.orbmu2k.de/)(很合适的名字,它是免费的!)有一个“甜点”——有着一个和Query Analyzer很像的界面。如果你有兴趣的话,可以从这里http://www.sqlite.org/cvstrac/wiki?p=ManagementTools找到一个很大的SQLite GUI客户端列表。
指南的最后一步就是创建一个SQLite数据库:

通过GUI,创建一个数据库并随意创建一个测试表,就会出现一个以.s3db为尾缀的单独文件。
一旦System.Data.SQLite.dll被引用为.NET项目的一部分,那就可以像在你的应用顶部写using System.Data.SQLite那样容易地使用它。通过使用ADO.NET包装层,一个参数化的查询看上去会像是这样:
string lookupValue;
using (SQLiteCommand cmd = cnn.CreateCommand())
{
for (int i = 0; i < 100; i++)
{
lookupValue = getSomeLookupValue(i);
cmd.CommandText = @"UPDATE [Foo] SET [Value] = [Value] + 1
WHERE [Customer] LIKE ‘" + lookupValue + "’";
cmd.ExecuteNonQuery();

}
}
数据提供者
SQLite已经实实在在地影响到.NET的开发,已经有很多数据提供器被用于流行的对像关系映射(O/RM, 即Object-Relational Mapper)框架中。
SQLite NHibernate Provider (http://www.hibernate.org/361.html#A9
SQLite Subsonic Provider (http://codefornothing.wordpress.com/2007/07/19/sqlite-data-provider-for-subsonic-part-2/
SQLite LINQ Provider (http://kubasik.net/blog/2007/10/25/sqllite-linq-provider/
LINQ提供器允许.NET 3.5的开发者们利用新LINQ框架的优势,并以SQLite作为后端数据存储。

SQLite可以作为替代Access或SQL Express让数据库应用快速创建和运行起来的一个不错选择,而且因为数据库还可以同时在Linux和Mac OSX平台上使用,所以创建一个可以跨平台使用的数据库应用很容易。

参考:
(1).NET和SQLite取出飞信(Fetion)信息
(2).飞信Fetion历史数据库研究(History.dat) http://blog.csdn.net/xiammy/archive/2008/05/14/2446690.aspx