0
string connectionString = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;
SQLiteConnection connString = new SQLiteConnection(connectionString);
using (var command = connString.CreateCommand())
{           
     try
     {
          connString.SetPassword(ConfigurationManager.AppSettings["password1"]);

          connString.Open();
          connString.ChangePassword((String)null);
          connString.ChangePassword(ConfigurationManager.AppSettings["password2"]);
          connString.Close();
          connString.Dispose();
     }
     catch (Exception e)
     {
          Console.Write(e.Message + "\n" + e.StackTrace);
     }
}

我正在尝试通过一个简单的控制台应用程序来测试 SQLite。我正在使用 app.config 文件从中读取密码和连接字符串。该代码能够在第一次运行时设置密码,但是如果我打开连接并尝试通过调用 ChangePassWord() 方法更改密码,则密码不会更改。我也尝试将密码设置为空,然后将其重置为一些新密码,但这也不起作用。

错误是 打开的文件不是数据库文件。文件已加密或不是数据库

其他一些人也有同样的问题:ChangePassword method problem

4

1 回答 1

0

我不是百分百确定。但出于某种原因,从 app.config 读取连接字符串可能会对其产生一些影响。我取出连接字符串并决定像这样对其进行硬编码

SQLiteConnection connString = new SQLiteConnection("data source=\".\\SomeDatabase\"");

之前是这样的:

<connectionStrings>
    <add name="connection"
        connectionString="data source=&quot;.\SomeDatabase&quot;"
        providerName="System.Data.SQLite" />
</connectionStrings>

希望这可以帮助某人

于 2012-05-16T17:12:05.093 回答