Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Data.SQLite-无法访问加密的数据库_C#_Sqlite_Encryption - Fatal编程技术网

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

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

我在中为我的数据库设置了加密密钥,现在我无法在C中访问它

以下是相关代码:

    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。