【问题标题】:SQLite encryption in Universal Windows apps通用 Windows 应用程序中的 SQLite 加密
【发布时间】:2018-09-23 01:11:59
【问题描述】:

我在我的通用应用程序中使用 SQLite 数据库。我想对数据库文件进行密码保护。我可以为 db 文件设置密码。但是当我尝试阅读它时,它会显示类似“Sqlite26:文件已加密或不是数据库文件”的错误。

我提到了this URL。我在 .NET Standard 库中使用 Entity Framework Core。是否可以从 .NET Standard 库中的加密数据库中读取值?

【问题讨论】:

  • UWP 应用目标版本为 16299。Dotnet 标准库版本为 2.0。 Microsoft.EntityFrameworkCore.Sqlite(2.0.1).Microsoft.EntityFrameworkCore.Tools(2.0.1)
  • 你的意思是你用Microsoft.Data.Sqlite.Core加密,用Microsoft.EntityFrameworkCore.Sqlite读取数据?您能否提供更多关于您如何加密的代码 sn-p?

标签: sqlite uwp windows-store-apps


【解决方案1】:

您链接的文章的作者实际上有一个answer here on SO,它也处理 EF Core 场景。您可以在 OnConfiguring 方法覆盖中使用 EF Core 打开数据库:

class AppDbContext : DbContext
{
    private SqliteConnection _connection;

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        _connection = new SqliteConnection(_connectionString);
        _connection.Open();

        var command = _connection.CreateCommand();
        command.CommandText = "PRAGMA key = 'password';";
        command.ExecuteNonQuery();

        options.UseSqlite(_connection);
    }

    protected override void Dispose()
    {
        _connection?.Dispose();
    }
}

kez 是在第一次查询连接之前提供密码,就像在PRAGMA 命令中一样。

【讨论】:

  • 这种方法抛出异常为“Microsoft.Data.Sqlite.SqliteException:SQLite Error 26:'file is encrypted or is not a database'
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多