如何使用密码连接SQLite数据库

16

我有一个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;");

但这并不起作用。

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

我可以像这样无需密码连接到数据库:

_connection = new SQLiteConnection("Data Source=MedExpress.db;Version=3;");

我的问题是如何为一个sqlite数据库设置密码,并使用System.Data.SQLite从C#程序连接。

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

先删除加密...


5

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

来自ConnectionStrings.com

Data Source=filename;Version=3;Password=myPassword;

此外,还可以查看这个链接

希望能够帮到您。


0

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


0

虽然很久以前了,但这是我的解决方案,可以使用连接字符串和密码与LITEDB一起工作。但请记住,您需要首先在数据库中设置密码。您可以使用此工具(LITE DB EXPLORER)创建和管理数据库。 https://github.com/JosefNemec/LiteDbExplorer

在应用程序配置中添加您的连接字符串,例如:

<?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;
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接