目录
为方便对SQLite数据库操作,封装成工具类,可在任意地方调用。
一、安装SQLite驱动
在VS2022中,右键项目->管理NuGet程序包,搜索并安装"System.Data.SQLite.Core",安装好就可以直接使用了。

二、数据库工具类封装
SqliteHelper工具类是一个静态工具类,创建一个普通的C#类文件就行。
创建步骤: 在解决方案资源管理器 中,右键你的项目 → 添加 → 类。命名SqliteHelper.cs
这里没有写命名空间,是为了能够在任何窗体里都可以直接使用SqliteHelper类,不用额外再using。
1、创建SqliteHelper类
cs
using System;
using System.Configuration;
using System.Data;
using System.Data.SQLite;
using System.Windows.Forms;
/// <summary>
/// SQLite 数据库工具类,结构与 MySqlHelper 保持一致
/// </summary>
public static class SqliteHelper
{
// 数据库连接信息
private static readonly string connectionString =
"Data Source=" + System.IO.Path.Combine(Application.StartupPath, "c_test.db") + ";Version=3;";
/// <summary>
/// 获取一个新的数据库连接(调用方负责释放)
/// </summary>
public static SQLiteConnection GetConnection()
{
return new SQLiteConnection(connectionString);
}
/// <summary>
/// 执行增删改,返回受影响的行数
/// </summary>
public static int ExecuteNonQuery(string sql, params SQLiteParameter[] parameters)
{
using (var connection = GetConnection())
{
connection.Open();
using (var command = new SQLiteCommand(sql, connection))
{
if (parameters != null)
command.Parameters.AddRange(parameters);
return command.ExecuteNonQuery();
}
}
}
/// <summary>
/// 执行查询,返回 DataTable
/// </summary>
public static DataTable ExecuteDataTable(string sql, params SQLiteParameter[] parameters)
{
using (var connection = GetConnection())
{
connection.Open();
using (var command = new SQLiteCommand(sql, connection))
{
if (parameters != null)
command.Parameters.AddRange(parameters);
var adapter = new SQLiteDataAdapter(command);
var dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
}
}
/// <summary>
/// 执行查询,返回第一行数据(DataRow)。无数据时返回 null
/// </summary>
public static DataRow ExecuteDataRow(string sql, params SQLiteParameter[] parameters)
{
DataTable dt = ExecuteDataTable(sql, parameters);
if (dt.Rows.Count == 0) return null;
return dt.Rows[0];
}
/// <summary>
/// 执行查询,返回第一行第一列(适合 COUNT、SUM、单个字段)
/// </summary>
public static object ExecuteScalar(string sql, params SQLiteParameter[] parameters)
{
using (var connection = GetConnection())
{
connection.Open();
using (var command = new SQLiteCommand(sql, connection))
{
if (parameters != null)
command.Parameters.AddRange(parameters);
return command.ExecuteScalar();
}
}
}
/// <summary>
/// 测试数据库连接是否可用
/// </summary>
public static bool TestConnection()
{
try
{
using (var connection = GetConnection())
{
connection.Open();
return true;
}
}
catch
{
return false;
}
}
}
2、填写数据库配置信息
我这里是直接写在SqliteHelper类里了,也可以在app.config里填写数据库信息。把数据库文件放到\bin\debug\文件夹下。
cs
// 数据库连接信息
private static readonly string connectionString =
"Data Source=" + System.IO.Path.Combine(Application.StartupPath, "c_test.db") + ";Version=3;";
字段说明:
**Data Source:**数据库文件的完整路径。Application.StartupPath会返回exe所在目录,Path.Combine把它和c_test.db拼成完整的路径。
Version: SQLite 的版本号,固定写
3。这是System.Data.SQLite要求的,表示使用 SQLite 3 的格式。
3、验证创建成功
cs
bool ok = SqliteHelper.TestConnection();
MessageBox.Show(ok ? "数据库连接正常" : "数据库连接失败");
三、CURD操作示例
cs
using System;
using System.Data;
using System.Data.SQLite;
class Program
{
static void Main(string[] args)
{
// 1. 查询示例
Console.WriteLine("查询所有用户:");
var querySql = "SELECT * FROM user";
var users = SqliteHelper.ExecuteDataTable(querySql);
foreach (DataRow row in users.Rows)
{
Console.WriteLine($"ID: {row["id"]}, 用户名: {row["username"]}, 状态: {row["status"]}");
}
// 2. 插入示例(参数化查询防止SQL注入)
Console.WriteLine("\n插入新用户:");
var insertSql = "INSERT INTO user(username, password, status) VALUES(@username, @password, @status)";
var insertParams = new SQLiteParameter[] {
new SQLiteParameter("@username", "张三"),
new SQLiteParameter("@password", "123456"),
new SQLiteParameter("@status", 1)
};
int affectedRows = SqliteHelper.ExecuteNonQuery(insertSql, insertParams);
Console.WriteLine($"插入成功,影响行数: {affectedRows}");
// 3. 更新示例
Console.WriteLine("\n更新用户状态:");
var updateSql = "UPDATE user SET status = @status WHERE username = @username";
var updateParams = new SQLiteParameter[] {
new SQLiteParameter("@status", 2),
new SQLiteParameter("@username", "张三")
};
affectedRows = SqliteHelper.ExecuteNonQuery(updateSql, updateParams);
Console.WriteLine($"更新成功,影响行数: {affectedRows}");
// 4. 删除示例
Console.WriteLine("\n删除用户:");
var deleteSql = "DELETE FROM user WHERE username = @username";
var deleteParam = new SQLiteParameter("@username", "张三");
affectedRows = SqliteHelper.ExecuteNonQuery(deleteSql, deleteParam);
Console.WriteLine($"删除成功,影响行数: {affectedRows}");
// 5. 单值查询示例(判断用户是否存在)
Console.WriteLine("\n查询用户数量:");
var countSql = "SELECT COUNT(*) FROM user";
object count = SqliteHelper.ExecuteScalar(countSql);
Console.WriteLine($"当前用户总数: {count}");
Console.ReadLine();
}
}