在UWP应用中集成SQLite数据库

SQLite是一个免费的数据库程序,适用于“轻量级”数据库应用。它支持事务和SQL调用,并且相对容易使用。将SQLite集成到UWP应用中既快速又简单;以下是将SQLite包含在C#UWP应用中的步骤。还包括一些公开可用的类,这些类简化了SQLite的使用,以及一些示例代码,展示了如何使用这些类。最后,提供了有用的下载链接和更多信息。

将SQLite添加到解决方案

注意:这适用于Visual Studio 2015和2017。

应使用NuGet将SQLiteUWP库添加到解决方案中。

点击“工具”|“Nuget包管理器”|“管理解决方案的NuGet包...”,然后选择“浏览”。

搜索“SQLite.UWP.Native”。找到后,将其安装在解决方案中。

使用SQLiteUWP

有两个名为“Sqlite.cs”和“SqliteAsync.cs”的文件,提供了一个简单的C#接口来使用SQLiteUWP库。它们可以从以下网址下载:

此网站还包含接口的详细文档。

“Sqlite.cs”文件包含一个名为“SqlConnection”的类,可用于创建和操作SQLite数据库。

“SqliteAsync.cs”包含一个名为“SqliteAsyncConnection”的类,用于异步数据库例程。根据应用是使用异步还是非异步模型,应该将这两个文件中的一个或两个添加到解决方案中。

这两个类都有连接和断开数据库的方法,创建数据库以及添加、删除和更新数据库记录的方法。此外,这些类也可以用来执行原始SQL脚本。

Employee类示例

以下是一个Employee类的示例,它使用非异步模型:

public class Employee { // 将Id属性标记为主键 [SQLite.PrimaryKey, SQLite.AutoIncrement] public int Id { get; set; } public string LastName { get; set; } public string FirstName { get; set; } public DateTime DOB { get; set; } }

创建数据库连接

使用SQLiteConnection构造函数创建数据库连接,参数为数据库表的路径。

public static string DB_PATH = Path.Combine(Path.Combine(ApplicationData.Current.LocalFolder.Path, "SQLiteTest.sqlite")); /// <summary> /// Initialize the connection. /// </summary> /// <param name="path"> The optional path. </param> /// <returns> True on success, false otherwise. </returns> public bool Initialize(string path = null) { bool retVal = false; this.dbPath = path ?? DB_PATH; if (this.dbPath != null) { dbConn = new SQLiteConnection(dbPath); retVal = (DbConn != null); if (retVal) { retVal = DbConn.CreateTable<Employee>() >= 0; } } return retVal; }

数据操作

可以使用接口来选择、更新、添加和删除记录。

/// <summary> /// Retrieve all employees. /// </summary> /// <returns> The collection of employees. </returns> public ObservableCollection<Employee> RetrieveEmployees() { List<Employee> audioList = DbConn.Table<Employee>().ToList<Employee>(); ObservableCollection<Employee> EmployeeList = new ObservableCollection<Employee>(audioList); return EmployeeList; } /// <summary> /// Update an existing employee. /// </summary> /// <param name="newRecord"> The record to update, with: /// 1. The id of the record to update. /// 2. The new values. </param> public void UpdateEmployee(Employee newRecord) { var existingAudioNote = DbConn.Query<Employee>( "select * from Employee where Id =" + newRecord.Id).FirstOrDefault(); if (existingAudioNote != null) { existingAudioNote.LastName = newRecord.LastName; existingAudioNote.FirstName = newRecord.FirstName; existingAudioNote.DOB = newRecord.DOB; DbConn.RunInTransaction(() => { DbConn.Update(existingAudioNote); }); } } /// <summary> /// Insert a new employee record. The ID field /// is ignored. /// </summary> /// <param name="newEmployee"> The new employee record. </param> public void Insert(Employee newEmployee) { DbConn.RunInTransaction(() => { DbConn.Insert(newEmployee); }); } /// <summary> /// Delete a specific employee. /// </summary> /// <param name="Id"> The id of the employee to delete. </param> public void Delete(int Id) { var existingEmployee = DbConn.Query<Employee>( "select * from Employee where Id =" + Id).FirstOrDefault(); if (existingEmployee != null) { DbConn.RunInTransaction(() => { DbConn.Delete(existingEmployee); }); } }

清理资源

在完成使用接口后,可以“清理”资源。

/// <summary> /// Dispose the class. /// </summary> public void Dispose() { if (DbConn != null) { dbConn.Close(); dbConn.Dispose(); dbConn = null; } }

使用可视化浏览器浏览数据库

可以从以下网址下载SQLite的可视化浏览器:

这对于测试和验证正在开发的数据库非常有用。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485