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

时间:2016-10-15 15:48:44

标签: c# sqlite encryption

我在DB Browser for SQLite中为我的数据库设置了加密密钥,现在我无法在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;
    }

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

1 个答案:

答案 0 :(得分:1)

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

以下是代码:

    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);
    }