在 C# 应用程序中使用 SQLite
SQLite 非常适合内存受限的系统,如 WinCE、Palm、智能手机、嵌入式设备以及普通的单用户桌面应用程序。
引言
SQLite 是一种小型、快速且可嵌入的数据库,其中数据库引擎和接口组合成一个单独的库。它还能够将所有数据存储在单个文件中。因此,如果您的应用程序需要一个独立的数据库,SQLite 可能是您的完美选择。当然,选择 SQLite 还有其他原因,包括
- SQLite 具有较小的内存占用空间,并且只需要一个库来访问数据库,使其成为嵌入式数据库应用程序的理想选择。
- SQLite 已被移植到许多平台,甚至可以在 Windows CE 和 Palm OS 上运行。
- SQLite 符合 ACID 标准,满足所有四个标准 - 原子性、一致性、隔离性和持久性。
- SQLite 实现了 ANSI-92 SQL 标准的大部分子集,包括视图、子查询和触发器。
- 没有额外的数据库驱动程序问题,也不需要 ODBC 配置。只需将库和数据文件包含在您的应用程序中即可。
- SQLite 具有 C/C++、PHP、Perl、Python、Tcl 等的本机语言 API。C# 的本机 API 仍然不存在。
Using the Code
要在 C# 应用程序中使用 SQLite,您需要从此处下载第三方免费的 ADO.NET 数据提供程序 (SQLite.NET.0.21_x68_dll.zip)。
我们的演示应用程序使用 SQLite 数据库在单个表 – mains
中存储 id
和 description
值对。我们将在此表中显示一个网格的内容,并添加了添加/删除和修改表中记录的功能。要设置系统,请按照以下步骤操作
-
解压缩档案,并将 *.dll 文件放入 Binary 文件夹。
-
通过“项目 -> 添加引用”在您的 .NET 应用程序中使用 SQLite.NET.dll。
-
在您的 *.cs 文件的
using
指令声明区域中添加Using Finisar.SQLite;
。 -
声明以下
private
字段以在您的应用程序中使用private SQLiteConnection sql_con; private SQLiteCommand sql_cmd; private SQLiteDataAdapter DB; private DataSet DS = new DataSet(); private DataTable DT = new DataTable();
-
创建一个函数来设置连接字符串。 DemoT.db 是单个数据文件的名称。它已经有一个表 –
mains
。 Version (=3) 是数据库引擎的版本。private void SetConnection() { sql_con = new SQLiteConnection ("Data Source=DemoT.db;Version=3;New=False;Compress=True;"); }
-
创建一个通用函数
ExecuteQuery
,以执行创建命令查询。private void ExecuteQuery(string txtQuery) { SetConnection(); sql_con.Open(); sql_cmd = sql_con.CreateCommand(); sql_cmd.CommandText=txtQuery; sql_cmd.ExecuteNonQuery(); sql_con.Close(); }
-
现在创建一个
LoadData
函数来访问 SQLite 数据库并从mains
表检索数据并填充数据集。请参考以下代码private void LoadData() { SetConnection(); sql_con.Open(); sql_cmd = sql_con.CreateCommand(); string CommandText = "select id, desc from mains"; DB = new SQLiteDataAdapter(CommandText,sql_con); DS.Reset(); DB.Fill(DS); DT= DS.Tables[0]; Grid.DataSource = DT; sql_con.Close(); }
-
要向表中添加/编辑/删除条目,只需将所需的查询传递给已创建的
ExecuteQuery
函数。请参见以下代码示例private void Add() { string txtSQLQuery = "insert into mains (desc) values ('"+txtDesc.Text+"')"; ExecuteQuery(txtSQLQuery); }
要管理 SQLite 数据库,一个开源 SQLite GUI 数据库浏览器实用程序非常有用。可以从此处下载。
结论
那么 SQLite 是否应该用于所有数据库驱动的应用程序?不。
像所有数据库一样,SQLite 也有其缺点列表。它不适用于客户端服务器应用程序或作为网络数据库。它不太适合多用户场景,并且在通过网络同时访问时可能会出现严重的文件锁定问题。出于同样的原因,SQLite 不适合多线程或多进程应用程序数据库访问场景。
总而言之,SQLite 非常适合内存受限的系统,如 WinCE、Palm、智能手机、嵌入式设备以及普通的单用户桌面应用程序,在这些应用程序中,它的小内存占用空间、单个库及其复制和粘贴部署功能使其具有明显的优势。
先决条件
- Visual Studio .NET 2003 (C#)
- SQLite (www.sqlite.org)
历史
- 2007 年 12 月 16 日:首次发布