一、安装 NuGet 包
安装 sqlite-net-pcl
安装 SQLitePCLRawEx.bundle_green
二、配置数据库(数据库文件名和路径)
namespace TodoSQLite;
public static class Constants
{
public const string DatabaseFilename = "TodoSQLite.db3";//数据库文件名
public const SQLite.SQLiteOpenFlags Flags =
// 以读写模式打开数据库。
SQLite.SQLiteOpenFlags.ReadWrite |
// 如果数据库文件不存在,则创建它。
SQLite.SQLiteOpenFlags.Create |
// 启用多线程数据库访问,以便多个线程可以共享数据库连接。
SQLite.SQLiteOpenFlags.SharedCache;
public static string DatabasePath =>
Path.Combine(FileSystem.AppDataDirectory, DatabaseFilename);
}
- DatabaseFilename:定义数据库文件名
"TodoSQLite.db3"
。 - Flags:指定打开数据库时的选项,包括读写模式、自动创建和多线程支持。
- DatabasePath:提供数据库文件的完整路径,将应用程序数据目录与数据库文件名结合起来。
三、延迟初始化
SQLiteAsyncConnection Database;
public class TodoItemDatabase
{
SQLiteAsyncConnection Database;//用于异步操作SQLite数据库的连接对象。
public TodoItemDatabase()//这是 TodoItemDatabase 类的默认构造函数。当前它是空的,并没有执行任何操作。这意味着在创建 TodoItemDatabase 类的实例时,不会立即进行任何初始化工作。
{
}
async Task Init()//Init 的异步方法。方法返回类型是 Task,表示这是一个异步操作。
{
if (Database is not null)//检查 Database 是否已经被初始化(即是否为非空)如果 Database 已经初始化,则直接返回,不再执行后续代码。这可以防止重复初始化。
return;
Database = new SQLiteAsyncConnection(Constants.DatabasePath, Constants.Flags);//创建一个新的 SQLiteAsyncConnection 实例。
var result = await Database.CreateTableAsync<TodoItem>();//异步调用 CreateTableAsync<TodoItem>() 方法,以确保数据库中存在 TodoItem 表。如果表不存在,这个方法会创建它。由于使用了 await 关键字,代码将在这一行异步等待操作完成,然后继续执行。
}
...
}
总结
以下是 TodoItemDatabase
类及其 Init
方法的详细解释:
-
成员变量
SQLiteAsyncConnection Database
:用于管理与SQLite数据库的异步连接。
-
构造函数
public TodoItemDatabase()
:默认构造函数,目前没有进行任何初始化操作。
-
Init
方法async Task Init()