首页 > 解决方案 > 带有加密密码的 Sqlite 连接字符串

问题描述

我有一个使用"SQLite Cipher"的加密数据库。当我尝试使用连接字符串连接到数据库时,会出现以下错误消息:

'SQL 逻辑错误不能使用“密码”连接字符串属性:库不是使用加密支持构建的。'

错误代码

Imports System.Data.SQLite
Public Class frm_projects
    Dim dtset As New SQLiteConnection("Data Source=Setting.db;Password=m;")

    Private Sub frm_projects_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            If dtset.State = ConnectionState.Closed Then
                dtset.Open()

            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "Warning")
        End Try
    End Sub
End Class

来自数据库浏览器 sqlite 密码的图像

标签: .netvb.netsqlitesqlcipher

解决方案


问题的来源

我认为此错误的实际原因是自System.Data.SQLite版本~1.0.113.1以来“旧版 CryptoAPI”缺乏支持。

它是在以下提交中完成的: https ://system.data.sqlite.org/index.html/info/1dd56c9fd59a10fd

我们能做什么?

  1. 手动使用支持 CryptoAPI 的最新 NuGet 版本 - 1.0.112.2

    注意 -必须手动完成 - 通过编辑或编辑PackageReference。原因是旧版本未从NuGet 提要中列出(!) : csprojconfig.packagesNuGet 提要仅显示一个版本

  2. 购买SQLite Encryption Extension( SEE) 的永久源代码许可证,一次性费用为 2000 美元(截至 2021 年 2 月)-购买链接

  3. 使用SQLCipher- SQLCipher 是一个 SQLite 扩展,提供数据库文件的 256 位 AES 加密 - GitHub 源(自己没有测试过!)

数据源


推荐阅读