C#使用SQLite(含加密)保姆级教程

C#使用SQLite

文章目录

涉及框架及库

自己在NuGet管理器里面安装即可

  • Chloe.SQLite:ORM框架
  • Microsoft.Data.Sqlite.Core:驱动
  • SQLitePCLRaw.bundle_e_sqlcipher:SQLite加密扩展

复制runtimes

主要复制两个dll:e_sqlite3.dlle_sqlcipher.dll

复制到项目根目录下,保持原有的结构,删除不使用的平台即可,设置属性为如果较新则复制

dll文件查找位置主要是自己的nuget缓存目录中

或者自己去NuGet下载:SQLitePCLRaw.lib.e_sqlite3SQLitePCLRaw.lib.e_sqlcipher

然后用压缩软件打开即可获取到dll文件

创建加密SQLite文件

生成连接字串

使用SqliteConnectionStringBuilder类,我们可以便捷的构建数据库连接字符串。

csharp 复制代码
SqliteConnectionStringBuilder sqliteConnectionStringBuilder = new SqliteConnectionStringBuilder();
sqliteConnectionStringBuilder.DataSource = "tanovo.db";
sqliteConnectionStringBuilder.Password = "123456";
sqliteConnectionStringBuilder.Mode = SqliteOpenMode.ReadWriteCreate;
SQLiteConnectionString = sqliteConnectionStringBuilder.ToString();

后续想在项目任何地方使用数据库,只需要使用

csharp 复制代码
using var db = App.sqlite;

获取数据库上下文对象即可。

执行SQL生成表

如果不至少生成一个表在库中的话,则生成的数据库文件是非加密的,可能只有数据库有数据时,数据库才是加密类型的。

csharp 复制代码
using var db = App.sqlite;
db.Session.ExecuteNonQuery(@"
    CREATE TABLE IF NOT EXISTS test_table
    (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      name TEXT,
      update_time TEXT,
      cteate_time TEXT
    );");

SQLiteConnectionFactory.cs

提供一下这个工厂类,方便伸手党直接复制了

csharp 复制代码
using Chloe.Infrastructure;
using Microsoft.Data.Sqlite;
using System.Data;

namespace TestSqliteC.DatabaseHelper
{
    public class SQLiteConnectionFactory : IDbConnectionFactory
    {
        string _connString = null;

        public SQLiteConnectionFactory(string connString)
        {
            this._connString = connString;
        }

        public IDbConnection CreateConnection()
        {
            IDbConnection conn = new SqliteConnection(this._connString);
            return conn;
        }
    }
}

代码结构

因为我是WPF程序,所以在App构造函数中对SQLite就进行初始化操作了。

最后

这里还推荐三个开源项目,一个是嵌入式的NoSQL数据库,一个是文件存储引擎,都是同一个人开发的,项目也很不错!

最后一个是SQLiteStudio,可以打开并浏览SQLite加密数据库文件,提供图形化界面,可以管理数据库文件。

  1. LiteDB
  2. FileDB
  3. SQLiteStudio
相关推荐
九鼎科技-Leo几秒前
了解 .NET 运行时与 .NET 框架:基础概念与相互关系
windows·c#·.net
九鼎科技-Leo3 小时前
什么是 ASP.NET Core?与 ASP.NET MVC 有什么区别?
windows·后端·c#·asp.net·mvc·.net
.net开发3 小时前
WPF怎么通过RestSharp向后端发请求
前端·c#·.net·wpf
小乖兽技术3 小时前
C#与C++交互开发系列(二十):跨进程通信之共享内存(Shared Memory)
c++·c#·交互·ipc
幼儿园园霸柒柒3 小时前
第七章: 7.3求一个3*3的整型矩阵对角线元素之和
c语言·c++·算法·矩阵·c#·1024程序员节
平凡シンプル5 小时前
C# EF 使用
c#
丁德双6 小时前
winform 加载 office excel 插入QRCode图片如何设定位置
c#·excel
九鼎科技-Leo7 小时前
在 C# 中,ICollection 和 IList 接口有什么区别?
windows·c#·.net
Bonne journée7 小时前
SQLite数据库是什么?DB Browser for SQLite是什么?
数据库·sqlite
浪里个浪的10247 小时前
【C#】创建一个主菜单和弹出菜单系统
开发语言·c#