Appearance
在 .NET 中使用 SQLite 数据库
创建项目
sh
$ dotnet new console -o SqliteSamples安装 Microsoft.Data.Sqlite
sh
$ cd SqliteSamples
$ dotnet add package Microsoft.Data.Sqlite用法
c#
using Microsoft.Data.Sqlite;
namespace SqliteSamples
{
class Program
{
static void Main()
{
// 创建数据库并插入初始数据
CreateAndSeed();
// 执行查询操作
Query();
// 清理资源:清除连接池并删除数据库文件
SqliteConnection.ClearAllPools();
File.Delete("hello.db");
}
static void CreateAndSeed()
{
// 创建SQLite数据库连接,连接到hello.db文件
using var connection = new SqliteConnection("Data Source=hello.db");
// 打开数据库连接
connection.Open();
// 创建命令对象
var command = connection.CreateCommand();
// 设置命令文本:创建user表并插入初始数据
command.CommandText = """
CREATE TABLE user (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 用户ID,主键,自增
name TEXT NOT NULL -- 用户名,文本类型,非空
);
-- 插入三条初始用户数据
INSERT INTO user
VALUES (1, 'Brice'),
(2, 'Alexander'),
(3, 'Nate');
""";
// 执行非查询命令(创建表和插入数据)
command.ExecuteNonQuery();
// 从控制台获取用户输入的用户名
Console.Write("Name: ");
var name = Console.ReadLine();
#region snippet_Parameter
// 使用参数化查询插入新用户,防止SQL注入
command.CommandText = "INSERT INTO user (name) VALUES ($name)";
command.Parameters.AddWithValue("$name", name);
#endregion
// 执行插入操作
command.ExecuteNonQuery();
// 获取最后插入行的ID
command.CommandText = "SELECT last_insert_rowid()";
var newId = (long)command.ExecuteScalar()!;
// 输出新用户的ID
Console.WriteLine($"Your new user ID is {newId}.");
}
static void Query()
{
// 从控制台获取要查询的用户ID
Console.Write("User ID: ");
var line = Console.ReadLine();
// 如果输入为空,直接返回
if (line is null)
{
return;
}
// 将输入转换为整数
var id = int.Parse(line);
#region snippet_HelloWorld
// 创建新的数据库连接
using var connection = new SqliteConnection("Data Source=hello.db");
// 打开连接
connection.Open();
// 创建命令对象
using var command = connection.CreateCommand();
// 设置查询命令:根据ID查询用户名
command.CommandText = """
SELECT name
FROM user
WHERE id = $id
""";
// 添加参数化查询参数
command.Parameters.AddWithValue("$id", id);
// 执行查询并获取数据读取器
using var reader = command.ExecuteReader();
// 遍历查询结果
while (reader.Read())
{
// 读取第一列的值(用户名)
var name = reader.GetString(0);
// 输出问候语
Console.WriteLine($"Hello, {name}!");
}
#endregion
}
}
}测试
sh
$ dotnet run
Name: Panda
Your new user ID is 4.
User ID: 4
Hello, Panda!