开始我也不知道,找到了一篇相关的文章,自己改了一段代码来取飞信的聊天记录和用户信息,希望下一版本的飞信把这个功能加上 :)
SQLite是一个开源数据库,现在已变得越来越流行,它的体积很小,被广泛应用于各种不同类型的应用中。
什么是SQLite?
SQLite的官方网站上是这样定义SQLite的:
SQLite是一个软件库,用于实现自包含、非服务式、零配置、事务化的SQL数据库引擎。
SQLite是一个嵌入式SQL数据库引擎,与其它大多数SQL数据库不同的是,SQLite没有独立的服务进程。SQLite直接读写原始的磁盘文件,一个拥有多个表、索引、触发器和视图的完整SQL数据库就包含在一个独立的磁盘文件中。数据库文件的格式是跨平台的,你可以在32位和64位系统之间、甚至在Big-Endian和Little-Endian(译者注:这是两种不同的字节排序方式,Big-Endian是指一个word中的高位Byte是放在内存word区域的低地址处,而Little-Endian则与之相反)两种不同的架构间自由地拷贝数据库,这一特性让SQLite成为应用文件格式的一种流行选择。SQLite不能替代Oracle,但可以考虑作为fopen()的替代方法。
SQLite已经是世界上布署得最广泛的SQL数据库引擎,被用在无以计数的桌面电脑应用中,还有消费电子设备中,如移动电话、掌上电脑和MP3播放器等。SQLite的源码就放在公有领域(即WikiPedia的public domain)中。
SQLite最早是应用在Linux和OSX平台上的,但对数据库需求较少的Windows应用而言,它是替代SQL Express和Access数据库运行于.NET之上的一个可行且实用的选择。
有一篇来自开发者Mike Duncan的文章,给出了一个在3分钟内就可将SQLite安装到.NET上的指南。这个指南非常有用,读完它你就可以使用一个轻量级的数据库来处理你丢给它的许多任务。
3分钟的指南
指南是从第一次下载SQLite开始的:
尽管你可以通过SQLite下载页获得Windows的通用库,但我还是打算建议你从sourceforge获取SQLite的ADO.NET 2.0数据提供者,我并不是说它是最高效的版本(它有一个ADO包装层以及附带的无用功能),但它确实是一个非常容易上手的版本,可能值得长期使用。
找出DLL:
将找到的DLL(System.Data.SQLite.DLL)拷贝到你的项目中,并添加引用。
下载和安装一个SQLite GUI工具,SQLiteMan有一个非常出色的windows版本,指南上是这样说的:
我一直在使用的工具名为“SQLite Administrator”(很合适的名字,它是免费的!)有一个“甜点”——有着一个和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)框架中。
LINQ提供器允许.NET 3.5的开发者们利用新LINQ框架的优势,并以SQLite作为后端数据存储。
SQLite可以作为替代Access或SQL Express让数据库应用快速创建和运行起来的一个不错选择,而且因为数据库还可以同时在Linux和Mac OSX平台上使用,所以创建一个可以跨平台使用的数据库应用很容易。
付上取飞信信息代码:
/*
引入程序集:System.Data.SQLite.dll
*/
using System.Data.SQLite;
SQLiteConnection conn = new SQLiteConnection("Data Source=history.dat 路径;Version=3;Password=飞信号";));
/*
history.dat 路径 : C:\\Users\\Administrator\\Desktop\\history.dat
飞信号:578340818
*/
SQLiteDataAdapter sda = new SQLiteDataAdapter();
DataSet ds = new DataSet();
conn.Open();
sda.SelectCommand = new SQLiteCommand("select * from Player", connHis);
sda.Fill(ds, "Player");
sda.SelectCommand = new SQLiteCommand("select * from Message", connHis);
sda.Fill(ds, "Message");
sda.SelectCommand = new SQLiteCommand("select * from MessageBody", connHis);
sda.Fill(ds, "MessageBody");
sda.Dispose();
conn.Close();
/*
放到DataSet中了,剩下的你就随便搞吧! :)
dataGridView1.DataSource = ds.Tables[0].DefaultView;
dataGridView2.DataSource = ds.Tables[1].DefaultView;
dataGridView3.DataSource = ds.Tables[2].DefaultView;
*/
引入程序集:System.Data.SQLite.dll
*/
using System.Data.SQLite;
SQLiteConnection conn = new SQLiteConnection("Data Source=history.dat 路径;Version=3;Password=飞信号";));
/*
history.dat 路径 : C:\\Users\\Administrator\\Desktop\\history.dat
飞信号:578340818
*/
SQLiteDataAdapter sda = new SQLiteDataAdapter();
DataSet ds = new DataSet();
conn.Open();
sda.SelectCommand = new SQLiteCommand("select * from Player", connHis);
sda.Fill(ds, "Player");
sda.SelectCommand = new SQLiteCommand("select * from Message", connHis);
sda.Fill(ds, "Message");
sda.SelectCommand = new SQLiteCommand("select * from MessageBody", connHis);
sda.Fill(ds, "MessageBody");
sda.Dispose();
conn.Close();
/*
放到DataSet中了,剩下的你就随便搞吧! :)
dataGridView1.DataSource = ds.Tables[0].DefaultView;
dataGridView2.DataSource = ds.Tables[1].DefaultView;
dataGridView3.DataSource = ds.Tables[2].DefaultView;
*/