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

C#使用SQLite

文章目录

  • C#使用SQLite
    • 涉及框架及库
    • 复制runtimes
    • 创建加密SQLite文件
      • 生成连接字串
      • 执行SQL生成表
      • SQLiteConnectionFactory.cs
    • 代码结构
    • 最后

涉及框架及库

自己在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类,我们可以便捷的构建数据库连接字符串。

SqliteConnectionStringBuilder sqliteConnectionStringBuilder = new SqliteConnectionStringBuilder();
sqliteConnectionStringBuilder.DataSource = "tanovo.db";
sqliteConnectionStringBuilder.Password = "123456";
sqliteConnectionStringBuilder.Mode = SqliteOpenMode.ReadWriteCreate;
SQLiteConnectionString = sqliteConnectionStringBuilder.ToString();

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

using var db = App.sqlite;

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

执行SQL生成表

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React Native框架开发APP,安装免费的图标库(react-native-vector-icons)并使用详解

一、安装图标库 要使用免费的图标库,你可以使用 React Native Vector Icons 库。 首先,确保你已经安装了 react-native-vector-icons: npm install --save react-native-vector-iconsnpm install --save-dev types/react-native-vector-ic…

并发编程之CountDownLatch和CyclicBarrier的详细解析(带小案例)

CountDownLatch 倒计时锁存器 用来解决线程执行次序的问题 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞), 当计数器的值变为…

云服务器8核32G配置租用优惠价格94元/月、1362元一年

8核32G云服务器京东云轻量云主机价格94元1个月、282元3个月、673元6个月、1362元一年,配置8C32G-100G SSD系统盘-10M带宽-2000G月流量 华北-北京,京东云优惠活动 yunfuwuqiba.com/go/jd 活动链接打开如下图: 8核32G云服务器京东云轻量云主机价…

CSS(三)---【盒子模型、边框、外边距合并】

零.前言 本篇主要介绍CSS中最重要的一种概念模型:“盒子模型”。 关于CSS的更多内容,可以查看作者之前的文章: CSS(一)---【CSS简介、导入方式、八种选择器、优先级】-CSDN博客 CSS(二)---【常见属性、复合属性使用】-CSDN博客 一.盒子模…

WebCopilot:一款功能强大的子域名枚举和安全漏洞扫描工具

关于WebCopilot WebCopilot是一款功能强大的子域名枚举和安全漏洞扫描工具,该工具能够枚举目标域名下的子域名,并使用不同的开源工具检测目标存在的安全漏洞。 工具运行机制 WebCopilot首先会使用assetsfinder、submaster、subfinder、accumt、finddom…

Jamba:AI21 实验室发布首个应用级的 Mamba 架构 AI 模型

AI21 实验室发布了 Jamba,这是全球首个基于 Mamba 架构的、可用于实际应用的 AI 模型。目前大多数模型(例如 GPT、Gemini 和 Llama)都基于 Transformer 架构。Jamba 结合了 Mamba 结构化状态空间模型 (SSM) 和传统 Transformer 架构的优点&am…

属性选择器

1.[title]{background:yellow;}:所有带title标签设置成黄色 2.div[class]{background:yellow;}:所有div中带class标签设置成黄色 3.div[classbox1]{border:1px solid blue; }:div中包含class并且classbox1的设置成蓝边框 4. class…

Postman Tests设置Global读取不是最新值,跟Tests执行顺序有关(踩坑笔记)

前言 在执行Run Collection的时候,发现设置的全局变量每次读取都是旧值,没有读取到最新的值。 背景 有2个地方需要动态参数,一个URL,一个Body,因此需要设置Tests脚本。 url动态参数 url:动态参数projec…

【Java】打包:JAR、EAR、WAR

打包:JAR、EAR、WAR war 是一个 Web 模块,其中需要包括 WEB-INF,是可以直接运行的 WEB 模块。而 jar 一般只是包括一些 class 文件,在声明了 main_class 之后是可以用 java 命令运行的。 它们都是压缩的包,拿 Tomcat …

【基于springboot分析Quartz(v2.3.2)的启动流程】

基于springboot分析Quartz(v2.3.2)的启动流程 最近公司的定时任务使用了Quartz框架,在开发中经常出现定任务不执行了的问题,但是我又找不到原因所在,可把我愁坏了。于是我决定看看Quartz框架是怎么调度任务的。&#x…

C# wpf 实现底部嵌入HwndHost

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件 第四章 底部嵌入HwndHost(本章) 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现?1、底部创建窗口(1)、创建透明窗口&…

FebHost:什么是哈萨克斯坦.KZ域名?

哈萨克斯坦,作为中亚地区重要的一员,其国家域名”.kz”正成为这个独立国家在网络世界中的代表。作为一个经济快速发展的国家,哈萨克斯坦的互联网基础设施和网络应用也在蓬勃发展。而.kz域名正是哈萨克斯坦网络身份的重要体现。 作为注册和管理.kz域名的主要机构,哈…

2020年30米二级分类北京市土地利用数据

引言 北京市省土地利用数据产品是指基于Landsat TM/ETM/OLI遥感影像,采用遥感信息提取方法,并结合野外实测,以及参照国内外现有的土地利用/土地覆盖分类体系,经过波段选择及融合,图像几何校正及配准并对图像进行增强处…

Elasticsearch 开放 inference API 增加了对 Cohere Embeddings 的支持

作者:来自 Elastic Serena Chou, Jonathan Buttner, Dave Kyle 我们很高兴地宣布 Elasticsearch 现在支持 Cohere 嵌入! 发布此功能是与 Cohere 团队合作的一次伟大旅程,未来还会有更多合作。 Cohere 是生成式 AI 领域令人兴奋的创新者&…

SpringBoot+Prometheus+Grafana实现应用监控和报警

一、背景 SpringBoot的应用监控方案比较多&#xff0c;SpringBootPrometheusGrafana是目前比较常用的方案之一。它们三者之间的关系大概如下图&#xff1a; 关系图 二、开发SpringBoot应用 首先&#xff0c;创建一个SpringBoot项目&#xff0c;pom文件如下&#xff1a; <…

蓝桥杯嵌入式老竞赛板在MDK5上使用CooCox下载出现unknown device的问题

本文是在参考网上博客并经过实操解决自己遇到的问题总结而成&#xff0c;只是为了让后来者少走弯路。 本文是在在LED闪烁实验时遇到这个问题 蓝桥杯嵌入式老竞赛板在MDK5上使用CooCox下载出现unknown device的问题 环境&#xff1a;win11系统&#xff0c;keil MDK 518 老竞赛…

【Unity】TextMeshPro富文本

启用富文本 在Unity里&#xff0c;如果需要使用富文本&#xff0c;首先需要开启Rich Text 如果不开启Rich Text&#xff0c;就会在UI上显示富文本代码 1.粗体 <b>Game</b> Over2.斜体 <i>Game</i> Over3.下划线 <u>Game</u> Over4…

.Net 知识杂记

记录平日中琐碎的.net 知识点。不定期更新 目标框架名称(TFM) 我们创建C#应用程序时&#xff0c;在项目的工程文件(*.csproj)中都有targetFramework标签&#xff0c;以表示项目使用的目标框架 各种版本的TFM .NET Framework .NET Standard .NET5 及更高版本 UMP等 参考文档&a…

Tomcat配置https

前言&#xff1a;本文内容为实操记录&#xff0c;仅供参考&#xff01; 一、证书 CA证书申请下载不赘述了。 二、上传证书 进入tomcat根目录&#xff0c;conf同级目录下创建cert文件夹&#xff0c;并将证书两个文件上传到该文件夹&#xff1b; 三、编辑conf/server.xml文件 ① …

unity3d for web

时光噶然 一晃好多年过去了&#xff08;干了5年的u3d游戏&#xff09;&#xff0c;记得最后一次使用的版本好像是 unity 2017。 那个是 unity3d for webgl 还需要装个插件。用起来很蛋疼。 最近做一个小项目 在选择是用 Layabox 还是 cocosCreate 的时候 我想起了老战友 Uni…