c# - System.Data.SQLite - 无法访问加密数据库

标签 c# sqlite encryption

我在 DB Browser for SQLite 中为我的数据库设置了加密 key 现在我无法在 C# 中访问它。

相关代码如下:

    private SQLiteConnection connection;

    public DbManager()
    {
        connection = new SQLiteConnection("Data Source=DB\\gamedb.encrypted.sqlite;Password=p4ssw0rd;Version=3;");
        connection.Open();
    }

下面的 SQLiteCommand 抛出异常:“文件已加密或不是数据库”。

    public Dictionary<string, string> ReadMaps()
    {
        SQLiteDataReader reader = new SQLiteCommand("select * from Map", connection).ExecuteReader();
        Dictionary<string, string> res = new Dictionary<string, string>();
        while (reader.Read())
            res[(string)reader["Name"]] = (string)reader["Data"];
        return res;
    }

数据库浏览器中指定的 key 与密码不同吗?

最佳答案

我决定通过编码来设置密码,它有效。我创建了一个用于设置/清除密码的新项目。

代码如下:

    SQLiteConnection conn;

    // (code omitted)

    private void setPwButton_Click(object sender, EventArgs e)
    {
        if (!String.IsNullOrEmpty(passwordTextBox.Text))
            conn.ChangePassword(passwordTextBox.Text);
        else
            MessageBox.Show("Please specify a password!");
    }

    private void clearPwButton_Click(object sender, EventArgs e)
    {
        conn.ChangePassword(String.Empty);
    }

关于c# - System.Data.SQLite - 无法访问加密数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061094/

相关文章:

c# - 在 DB4O 中按类型查询

java - SQLite 数据类型如何映射到 Java?

Sqlite:当行不存在或为空时将最大值设置为零

java - 安卓加密音频播放器

c# - 在 winrt c# 中加密字符串并在 c# .net 中解密

c# - 替换为通配符

c# - Lambda 事件处理程序范围

c# 我如何比较两个具有匹配字母但一个有空格的字符串

sql - sqlite fts 表中的 rowid 与 docid 有什么区别?

java - Paypal Java SDK - 尝试创建加密按钮 - 不起作用,找不到文档