15

我有一个 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 数据库设置密码并使用 C# 程序连接System.Data.SQLite

4

4 回答 4

18

这是带密码的连接字符串

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

首先删除加密..

于 2012-03-06T15:41:43.057 回答
5

您可以通过连接字符串提供密码;

来自ConnectionStrings.com

数据源=文件名;版本=3;密码=myPassword;

另外,看看他的链接

希望能帮助到你

于 2012-03-06T15:25:44.243 回答
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;
        }
    }
于 2019-03-21T18:32:49.020 回答
0

这不是连接字符串的问题。如果自从第一次创建加密数据库以来,您还没有向数据库添加任何表。尽管我们不知道它是否存在错误,但它不允许使用密码连接数据库。

于 2022-01-30T06:26:39.623 回答