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()方法更改密码,则密码不会更改。我也尝试将密码设置为null,然后将其重置为某个新密码,但这也不起作用。
错误是 文件已打开但不是数据库文件。文件已加密或不是数据库
其他一些人遇到同样的问题:ChangePassword method problem。
答案 0 :(得分:0)
我不是百分百肯定。但由于某种原因,从app.config读取连接字符串可能会对它产生影响。我取出连接字符串并决定硬编码就像这样
SQLiteConnection connString = new SQLiteConnection("data source=\".\\SomeDatabase\"");
之前是这样的:
<connectionStrings>
<add name="connection"
connectionString="data source=".\SomeDatabase""
providerName="System.Data.SQLite" />
</connectionStrings>
希望这有助于某人