C# System.Data.SQLite-无法访问加密的数据库
我在中为我的数据库设置了加密密钥,现在我无法在C中访问它 以下是相关代码:C# System.Data.SQLite-无法访问加密的数据库,c#,sqlite,encryption,C#,Sqlite,Encryption,我在中为我的数据库设置了加密密钥,现在我无法在C中访问它 以下是相关代码: private SQLiteConnection connection; public DbManager() { connection = new SQLiteConnection("Data Source=DB\\gamedb.encrypted.sqlite;Password=p4ssw0rd;Version=3;"); connection.Open();
private SQLiteConnection connection;
public DbManager()
{
connection = new SQLiteConnection("Data Source=DB\\gamedb.encrypted.sqlite;Password=p4ssw0rd;Version=3;");
connection.Open();
}
下面的SQLITE命令引发异常:文件已加密或不是数据库
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;
}
DB browser中指定的密钥与密码不同吗?我决定通过编码来设置密码,它可以工作。我创建了一个新项目来设置/清除密码 代码如下:
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);
}
你真的在某个时候加密了吗?在未加密的DB文件上使用PW会失败,与错误的PW一样。我不确定,我认为设置加密密钥会加密文件。在哪里使用DBBrowser进行加密?我从来没有找到在哪里告诉它任何关于加密PWFile->Set encryption的信息,这在最新版本中显然是全新的。我也不能让它正常工作。它确实加密数据库时,你第一次设置它,它可以读取它,但我不能得到一个网络应用程序读取的PW数据库。相反,如果我应用PWFROM代码,我的代码可以使用DB,但不能使用DB浏览器。如果您查看bug列表,就会发现与此相关的几个问题。它使用的方法与网络提供商不同。显然,我也有同样的问题。问题在于System.Data.SQLite使用不同的加密,而DB Browser for SQLite使用密码加密。使用conn.ChangePasswordpasswordTextBox.Text加密数据库后;你能用SQLite的DB浏览器打开它吗?我也有类似的问题。如果我使用.NET应用程序使用library System.Data.sqlite创建加密/密码保护的sqlite db,我只能使用自己的应用程序访问数据,无法使用SQLiteStudio 3.2.1打开数据。但是,如果我使用SQLiteStudio创建db文件,那么我可以通过提供密码,使用我的.NET应用程序访问该db和数据。我真的希望能够在我的.NET应用程序中创建db,然后能够提供相同的密码从SQLiteStudio中访问相同的db。