111,111
社区成员




问题描述:
Sqlite官方从某个版本开始,加密功能需要收费了,所以在网上找了一种办法来使用Sqlite加密功能。参考网址:https://dotnet9.com/18592.html
需要安装以下Nuget包:
Microsoft.Data.Sqlite.Core
SQLitePCLRaw.bundle_e_sqlcipher
Dapper(只是用到其ORM功能,不是必须)
然后测试的时候发现,访问加密的数据库时,打开数据库连接很慢,基本都要1500ms以上。而访问未加密的数据库,打开数据库连接速度则正常,基本都是几毫秒到几十毫秒,差距十分明显。这样一来,以短连接形式访问数据库的就基本不可能了。
经过搜索,发现2018年就有前辈遇到相同的问题了,也在这里发帖了,不过没有讨论出结果,原贴参考:https://bbs.csdn.net/topics/392391946
不知道是否有大侠也遇到过同样的问题,并有解决方案呢?
测试代码:
static void Main(string[] args)
{
var connStr = @"Data Source=D:\Database\Test.db;Password = a123456;";//连接字符串
var connection = new SqliteConnection(connStr);//创建SQLite连接
if (connection.State == ConnectionState.Closed)
{
DateTime dt1 = DateTime.Now;
connection.Open();
DateTime dt2 = DateTime.Now;
Console.WriteLine($"打开连接耗时:{(dt2 - dt1).TotalMilliseconds}ms");
var createTableSqlStr = @"CREATE TABLE if not exists ""User"" ( ""Id"" INTEGER NOT NULL, ""AlarmName"" TEXT, ""AlarmTypeId"" INTEGER, PRIMARY KEY ( ""Id"" ) );";
var result = connection.Execute(createTableSqlStr);//使用Dapper执行sql语句创建表
var strSql = "Select * from User";
connection.Query(strSql);
}
Console.ReadKey();
}
测试结果:打开连接耗时:1805.6424ms