热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无法使用C#打开受密码保护的SQLite3数据库

使用System.Data.SQLite使用密码保护的SQLite数据库时出现问题.我正在使用用于SQLite的数据库浏览器来创建数据库并设置密码.使用DBBrowser,我可以打

使用System.Data.SQLite使用密码保护的SQLite数据库时出现问题.

我正在使用用于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;
///

Interaction logic for App.xaml
public partial class App : Application
{
/// Make sure that NLog is running
private static Logger logger = LogManager.GetCurrentClassLogger();
/// Run before the application starts up
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().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 64Bit上使用Visual Studio 2017.

谢谢.

解决方法:

SQLiteConnection和用于SQLite的数据库浏览器使用不同类型的加密.您必须使用SQLiteConnection本身对数据库进行加密.不幸的是,之后您将无法使用数据库浏览器

查看encrypt with c#

我相信没有解决方案,而是您自己将加密实施到数据库浏览器中.已经有关于此主题的讨论,并且开发人员似乎并未计划实施:discussion here


推荐阅读
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
author-avatar
丶敷衍怎么演彡_175
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有