InfoQ

新闻

SQLite——只要3分钟,你就可以在.NET上创建和运行它

作者 Robert Bazinet译者 张海龙 发布于 2008年1月20日 上午5时18分

社区
.NET
主题
数据访问
标签
LINQ,
nHibernate,
SubSonic,
SQLite

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

什么是SQLite?

SQLite的官方网站上是这样定义SQLite的:

SQLite是一个软件库,用于实现自包含非服务式零配置事务化的SQL数据库引擎。
SQLite是一个嵌入式SQL数据库引擎,与其它大多数SQL数据库不同的是,SQLite没有独立的服务进程。SQLite直接读写原始的磁盘文件,一个拥有多个表、索引、触发器和视图的完整SQL数据库就包含在一个独立的磁盘文件中。数据库文件的格式是跨平台的,你可以在32位和64位系统之间、甚至在Big-EndianLittle-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平台上使用,所以创建一个可以跨平台使用的数据库应用很容易。

查看英文原文Up and Running with SQLite on .NET in 3 Minutes

2 条回复

回复

听说SqlLite很不错 发表人 Anders Cui 发表于 2008年1月20日 下午7时46分
SQLite确实值得一试 发表人 Kevin Chu 发表于 2008年1月22日 下午10时0分
  1. 返回顶部

    听说SqlLite很不错

    2008年1月20日 下午7时46分 发表人 Anders Cui

    有机会尝试一下...

  2. 返回顶部

    SQLite确实值得一试

    2008年1月22日 下午10时0分 发表人 Kevin Chu

    尤其对于嵌入式开发和单机桌面应用,这样的嵌入式数据库引擎很有用。
    当然微软的类似的产品有SQL Server Compact Edtion,也可以用用db4o。

独家内容

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。