我有一个sqlite数据库,我想使用数据库的密码从我的C#程序连接。我正在使用Navicat,我用密码“test”设置加密数据库文件 然后通过代码我的连接字符串是:
_connection = new SQLiteConnection("Data Source=MedExpress.db;Version=3;Password=\"test\";");
或
_connection = new SQLiteConnection("Data Source=MedExpress.db;Version=3;Password=test;");
但这不起作用。
错误是:File opened that is not a database file
file is encrypted or is not a database
我可以在没有这样的密码的情况下连接到数据库:
_connection = new SQLiteConnection("Data Source=MedExpress.db;Version=3;");
我的问题是如何设置sqlite数据库的密码,并使用System.Data.SQLite
答案 0 :(得分:16)
这是带密码
的连接字符串Data Source=filename;Version=3;Password=myPassword;
正如您所说,您使用navicat设置sqlite加密。 加密意味着您已经加密了数据库,这与将密码设置为数据库不同。
在设置数据库密码时尝试此代码..
//create file
SQLite.SQLiteConnection.CreateFile("c:\\mydatabase file.db3")
Dim cn As New SQLite.SQLiteConnection
//set password
cn.ChangePassword("paxword")
//remove password
cn.ChangePassword("")
首先删除加密..
答案 1 :(得分:5)
答案 2 :(得分:0)
很久以前,但是这是我的解决方案,它可以使用使用连接字符串和密码的LITEDB。但是请记住,您需要首先在数据库中设置密码。您可以使用此工具(LITE DB EXPLORER)创建和管理数据库。 https://github.com/JosefNemec/LiteDbExplorer
在App Config中,添加连接字符串,如下例所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="LiteDB" connectionString="Filename=.\Databases\Data.db"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
并在后面的C#代码中:
private static string LoadConnectionString(string id = "LiteDB")
{
try {
return ConfigurationManager.ConnectionStrings[id].ConnectionString + ";password=your_pass";
}
catch (Exception loadConnectionStringError)
{
Console.WriteLine("loadConnectionStringError: " + loadConnectionStringError.ToString());
return null;
}
}