gpt4 book ai didi

c# - 无法使用 C# 打开受密码保护的 SQLite 3 数据库

转载 作者:行者123 更新时间:2023-11-30 15:57:35 28 4
gpt4 key购买 nike

我在使用受密码保护的 SQLite 数据库时遇到问题,使用 System.Data.SQLite。

我正在使用 DB Browser for SQLite 创建数据库并设置密码。使用 DB Browser,我可以毫无问题地打开、输入密码查看数据,然后关闭数据库。

因此,对于 .NET 4.6.2 和 System.Data.SqLite 1.0.105.2,以下代码片段不起作用,我不断收到“文件已加密或不是数据库”错误。

namespace licensekeygeneration
{
using NLog;
using NLog.Extensions.AzureTableStorage;
using System;
using System.Data.SQLite;
using System.Linq;
using System.Windows;

/// <summary>Interaction logic for App.xaml</summary>
public partial class App : Application
{
/// <summary>Make sure that NLog is running</summary>
private static Logger logger = LogManager.GetCurrentClassLogger();

/// <summary>Run before the application starts up</summary>
void App_Startup(object sender, StartupEventArgs e)
{
try
{
// Set link to the SQLite database and grab the logging endpoint
string dataSource = @"Data Source=c:\users\fred\desktop\database.db;Version=3;Page Size=1024;Password=ABCD";
SQLiteConnection conn = new SQLiteConnection(dataSource);

DataContext LocalDB = new DataContext(conn);

// Sets the target for NLog in code
string strNlog = LocalDB.GetTable<TblS3Settings>().Where(item => item.StrSettingName.Equals("NlogEndPoint") && item.BoolIsValid.Equals(true)).ToList().FirstOrDefault().StrSettingValue;
var azureStorageTarget = (AzureTableStorageTarget)LogManager.Configuration.FindTargetByName("AzureTableStorage");
azureStorageTarget.ConnectionString = strNlog;
}
catch (Exception ex)
{
// Problem with the database or the connection so error out
MessageBox.Show("There is an issue with the internal database\n" + ex.Message, "Application", MessageBoxButton.OK, MessageBoxImage.Hand);
Current.Shutdown();
}

// Logging OK and we have an attached database so lets start
MainWindow.Show();
}
}

如果我使用 DB Browser for SQLite 从数据库中删除密码并更改以下行:

string dataSource = @"Data Source=c:\users\fred\desktop\database.db;Version=3;Page Size=1024;";
SQLiteConnection conn = new SQLiteConnection(dataSource);

我得到了我期望的信息,生活很美好,所以我是否遗漏了 System.Data.SQLite 的一些东西,因为我无法让它按我预期的那样工作。

如果重要的话,我在 Windows 10 64 位上使用 Visual Studio 2017。

谢谢。

最佳答案

SQLiteConnection 和 DB Browser for SQLite 使用不同类型的加密。您必须使用 SQLiteConnection 本身来加密数据库。很遗憾,您之后无法使用 DB Browser

参见 encrypt with c#

我相信没有解决方案,只能自己在 DB Browser 中实现加密。已经有关于此主题的讨论,开发人员似乎没有计划实现:discussion here

关于c# - 无法使用 C# 打开受密码保护的 SQLite 3 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44789792/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com