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尚未出现。
要在C#应用程序中使用SQLite,需要下载一个第三方免费的ADO.NET数据提供程序。
演示应用程序使用SQLite数据库来存储id和description值对在一个单一的表——mains中。将在网格中显示这个表的内容,并添加了添加/删除和修改记录的功能。要设置系统,请按照以下步骤操作:
解压缩存档,并将*.dll文件放入Binary文件夹中。
通过“项目->添加引用”在.NET应用程序中使用SQLite.NET.dll。
在*.cs文件的using指令声明区域添加Using Finisar.SQLite;。
声明以下私有字段,以便在应用程序中使用:
private SQLiteConnection sql_con;
private SQLiteCommand sql_cmd;
private SQLiteDataAdapter DB;
private DataSet DS = new DataSet();
private DataTable DT = new DataTable();
创建一个函数来设置连接字符串。DemoT.db是单个数据文件的名称。它已经有一个单一的表——mains。版本(=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不适合多线程或多进程应用程序-数据库访问场景。
Visual Studio .NET 2003 (C#)