• 如何在C#中使用SQLite数据库
  • 发布于 2个月前
  • 243 热度
    0 评论
  • 乱人心
  • 0 粉丝 35 篇博客
  •   
在C#开发环境中,使用SQLite数据库可以为应用程序提供一个轻量级、可靠且易于嵌入的数据存储解决方案。SQLite是一个C语言库,提供了轻型的磁盘上数据库,不需要单独的服务器进程或操作系统级的配置。这使得SQLite成为桌面应用程序、移动应用程序和单用户应用的理想选择。

本文将介绍如何在C#项目中搭建SQLite数据库,并提供一些使用技巧。

一.搭建SQLite数据库
1. 安装SQLite NuGet包
在Visual Studio中,你可以通过NuGet包管理器安装System.Data.SQLite或Microsoft.Data.Sqlite包,这取决于你的具体需求和偏好。两者都提供了对SQLite数据库的基本操作支持,但System.Data.SQLite提供了更多的功能和工具,如SQLite的命令行界面和数据库设计工具。

要使用NuGet包管理器安装SQLite,请按照以下步骤操作:
1).打开Visual Studio。
2).在“解决方案资源管理器”中右键点击你的项目。
3).选择“管理NuGet包”。
4).在NuGet包管理器中搜索System.Data.SQLite或Microsoft.Data.Sqlite。

5).选择合适的包并安装。


2. 配置SQLite连接
安装完NuGet包后,你需要配置SQLite数据库的连接字符串。SQLite数据库是一个文件型数据库,因此连接字符串通常指向数据库文件的路径。例如,如果你的数据库文件名为MyDatabase.db,并且位于应用程序的执行目录下,连接字符串可以如下配置:
string connectionString = "Data Source=MyDatabase.db;Version=3;";

二.使用SQLite数据库
1. 创建数据库连接
使用配置好的连接字符串,你可以创建SQLite数据库连接:
using System.Data.SQLite; // 对于System.Data.SQLite
// 或
using Microsoft.Data.Sqlite; // 对于Microsoft.Data.Sqlite

string connectionString = "Data Source=MyDatabase.db;Version=3;";
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
    connection.Open();
    // 执行数据库操作
}
2. 执行SQL命令
使用SQLiteCommand对象执行SQL命令:
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
    connection.Open();
    
    string sql = "CREATE TABLE IF NOT EXISTS Users (Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL);";
    using (SQLiteCommand command = new SQLiteCommand(sql, connection))
    {
        command.ExecuteNonQuery();
    }
}
3. 查询数据
使用SQLiteDataReader读取查询结果:
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
    connection.Open();
    
    string sql = "SELECT * FROM Users;";
    using (SQLiteCommand command = new SQLiteCommand(sql, connection))
    using (SQLiteDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            int id = reader.GetInt32(0);
            string name = reader.GetString(1);
            Console.WriteLine($"User ID: {id}, Name: {name}");
        }
    }
}
4. 使用参数化查询
为了防止SQL注入攻击,应始终使用参数化查询:
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
    connection.Open();
    // 堆代码 duidaima.com
    string sql = "INSERT INTO Users (Name) VALUES (@Name);";
    using (SQLiteCommand command = new SQLiteCommand(sql, connection))
    {
        command.Parameters.AddWithValue("@Name", "John Doe");
        command.ExecuteNonQuery();
    }
}
5. 事务处理
使用事务可以确保数据库操作的原子性:
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
    connection.Open();
    
    SQLiteTransaction transaction = connection.BeginTransaction();
    
    try
    {
        using (SQLiteCommand command = new SQLiteCommand(connection))
        {
            command.Connection = connection;
            command.Transaction = transaction;
            
            command.CommandText = "INSERT INTO Users (Name) VALUES ('Jane Doe');";
            command.ExecuteNonQuery();
            
            command.CommandText = "UPDATE Users SET Name = 'Jane Smith' WHERE Name = 'Jane Doe';";
            command.ExecuteNonQuery();
            
            transaction.Commit();
        }
    }
    catch (Exception ex)
    {
        transaction.Rollback();
        Console.WriteLine(ex.Message);
    }
}
技巧
备份数据库:定期备份你的SQLite数据库文件,以防止数据丢失。
使用索引:为常用的查询列创建索引,以提高查询性能。
优化查询:避免使用SELECT *,而是指定需要的列。
关闭连接:确保在完成数据库操作后关闭连接,以释放资源。
错误处理:使用try-catch块处理数据库操作中的异常。
保持更新:定期检查并更新SQLite的NuGet包,以获取最新的功能和安全更新。
通过遵循这些步骤和技巧,你可以有效地在C#项目中使用SQLite数据库,为应用程序提供可靠的数据存储解决方案。
用户评论