2016-10-15 108 views
1

我在DB Browser for SQLite中爲我的數據庫設置了加密密鑰,現在我無法在C#中訪問它。System.Data.SQLite - 無法訪問加密數據庫

下面是相關代碼:

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

DB瀏覽器中指定的密鑰與密碼不同嗎?

+0

你有沒有其實加密它在某些時候?在未加密的數據庫文件上使用PW會導致錯誤PW – Plutonix

+0

我不確定,我認爲設置加密密鑰會加密文件 – mkkekkonen

+0

DBBrowser在哪裏做?我從來沒有找到在哪裏告訴它什麼關於加密PW – Plutonix

回答

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