🚀 1、简述
SQLite 是一款轻量级、嵌入式的关系型数据库,非常适合桌面应用、小型网站、移动端项目或需要“零配置数据库”的场景。本文将带你从零开始,在 C# 中使用 SQLite 进行数据库操作,并提供完整的实战代码样例。

2、什么是 SQLite
SQLite 是一个开源的、无服务器的数据库引擎。它的特点包括:
📦 单文件存储(一个 .db 文件即可)
⚡ 高性能与快速响应
🧩 无需安装服务或配置
🔒 支持事务与 SQL 标准
🌍 跨平台(Windows、macOS、Linux、Android、iOS)
在 C# 项目中,我们通常使用官方提供的 System.Data.SQLite 或 Microsoft.Data.Sqlite 来操作 SQLite 数据库。
3、实践样例
🔥 连接数据库
🔥 创建数据表
🔥 插入数据
🔥 查询与读取数据
🔥 更新与删除数据
我们通过一个简单的例子来演示这些操作。
3.1 环境准备
新建一个控制台项目
dotnet new console -n SQLiteDemo
cd SQLiteDemo
安装 NuGet 包
推荐使用 Microsoft.Data.Sqlite:
dotnet add package Microsoft.Data.Sqlite
📘 3.2 代码示例
using System;
using Microsoft.Data.Sqlite;
class Program
{
static void Main()
{
string dbPath = "Data Source=demo.db";
using (var connection = new SqliteConnection(dbPath))
{
connection.Open();
// 1. 创建表
var createCmd = connection.CreateCommand();
createCmd.CommandText = @"
CREATE TABLE IF NOT EXISTS Users (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Name TEXT NOT NULL,
Age INTEGER
);
";
createCmd.ExecuteNonQuery();
// 2. 插入数据
var insertCmd = connection.CreateCommand();
insertCmd.CommandText = "INSERT INTO Users (Name, Age) VALUES (@name, @age)";
insertCmd.Parameters.AddWithValue("@name", "Alice");
insertCmd.Parameters.AddWithValue("@age", 25);
insertCmd.ExecuteNonQuery();
// 3. 查询数据
var selectCmd = connection.CreateCommand();
selectCmd.CommandText = "SELECT Id, Name, Age FROM Users";
using (var reader = selectCmd.ExecuteReader())
{
Console.WriteLine("用户列表:");
while (reader.Read())
{
Console.WriteLine($"ID={reader.GetInt32(0)}, Name={reader.GetString(1)}, Age={reader.GetInt32(2)}");
}
}
// 4. 更新数据
var updateCmd = connection.CreateCommand();
updateCmd.CommandText = "UPDATE Users SET Age = @newAge WHERE Name = @name";
updateCmd.Parameters.AddWithValue("@newAge", 26);
updateCmd.Parameters.AddWithValue("@name", "Alice");
updateCmd.ExecuteNonQuery();
// 5. 删除数据
var deleteCmd = connection.CreateCommand();
deleteCmd.CommandText = "DELETE FROM Users WHERE Name = @name";
deleteCmd.Parameters.AddWithValue("@name", "Alice");
deleteCmd.ExecuteNonQuery();
Console.WriteLine("数据操作完成!");
}
}
}
3.3 执行效果
运行程序后,SQLite 会在项目目录生成一个 demo.db 文件。
程序输出类似如下:
用户列表:
ID=1, Name=Alice, Age=25
数据操作完成!
数据库文件可以用任何 SQLite 浏览器(如 DB Browser for SQLite)打开查看。
3.4 实践扩展
你可以将常用的数据库操作封装为一个服务类,方便在项目中复用:
public class SQLiteService
{
private readonly string _connectionString;
public SQLiteService(string dbPath)
{
_connectionString = $"Data Source={dbPath}";
}
public void ExecuteNonQuery(string sql, params (string, object)[] parameters)
{
using var conn = new SqliteConnection(_connectionString);
conn.Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = sql;
foreach (var (name, value) in parameters)
{
cmd.Parameters.AddWithValue(name, value);
}
cmd.ExecuteNonQuery();
}
public void Query(string sql, Action<SqliteDataReader> handleRow)
{
using var conn = new SqliteConnection(_connectionString);
conn.Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = sql;
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
handleRow(reader);
}
}
}
使用方式:
var db = new SQLiteService("demo.db");
db.ExecuteNonQuery("INSERT INTO Users (Name, Age) VALUES (@name, @age)", ("@name", "Bob"), ("@age", 30));
db.Query("SELECT * FROM Users", reader =>
{
Console.WriteLine($"{reader["Name"]} ({reader["Age"]})");
});
4、结语
通过本文的示例,你已经掌握了:
🔥 如何在 C# 中集成 SQLite;
🔥 如何执行 CRUD 操作;
🔥 如何封装可复用的数据库服务类。
SQLite 的优点在于轻便与嵌入式特性,非常适合:
🔥 桌面程序(如 WPF / WinForms)
🔥 小型 Web 应用
🔥 移动端 App(Xamarin / MAUI)
🔥 快速原型验证与数据缓存
SQLite 简洁而强大,是 C# 开发者的得力工具之一。建议结合 ORM 框架(如 Dapper 或 Entity Framework Core)进一步优化项目结构。