我有一个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
从C#程序连接
这是密码为的连接字符串
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("")
请先删除加密。。
您可以通过连接字符串提供密码;
来自ConnectionStrings.com
数据源=文件名;版本=3;密码=myPassword;
此外,看看他的链接
希望它能帮助
这是很久以前的事了,但这里是我的解决方案,它使用连接字符串和密码与LITEDB一起工作。但请记住,您需要先在数据库中设置密码。您可以使用此工具(LITE DB EXPLORER)创建和管理数据库。https://github.com/JosefNemec/LiteDbExplorer
在应用程序配置中添加您的连接字符串,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="LiteDB" connectionString="Filename=.DatabasesData.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;
}
}
这不是连接字符串的问题。如果您在第一次创建加密数据库后没有向数据库中添加任何表。它不允许用密码连接数据库,尽管我们不知道它是否有漏洞。