我在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;
}
数据库浏览器中指定的密钥与密码不同吗?
答案 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);
}