C#SQlite连接字符串格式

C#SQlite连接字符串格式,c#,.net,database,sqlite,C#,.net,Database,Sqlite,我这里有一个两部分的问题 1) 我从这里下载了SQLite:对于.NET4.5,有“混合”模式版本和“非混合模式”版本。我怎么知道我应该用哪一个 建立连接时,我使用以下命令: sqlite_conn=newSQLiteConnection(“数据源=db.db;版本=3;新=True;压缩=True;”) 2) 我假设“Version=3”表示正在使用的SQLite的版本。因此,如果我从上面的链接下载版本为System.Data.SQLite 1.0.84.0(3.7.15.2)的软件包,那么我

我这里有一个两部分的问题

1) 我从这里下载了SQLite:对于.NET4.5,有“混合”模式版本和“非混合模式”版本。我怎么知道我应该用哪一个

建立连接时,我使用以下命令:

sqlite_conn=newSQLiteConnection(“数据源=db.db;版本=3;新=True;压缩=True;”)

2) 我假设“Version=3”表示正在使用的SQLite的版本。因此,如果我从上面的链接下载版本为System.Data.SQLite 1.0.84.0(3.7.15.2)的软件包,那么我是否应该将版本=3更改为版本=3.7.15.2

  • 你应该选择混合的
  • 1.0.84.0是SQLite DLL的最新版本。我创造 我的连接字符串在
    c#
    中也有
    SQLite
    的应用程序 例如:

    sqlite_conn = new SQLiteConnection("Data Source=C:\SQLITEDATABASES\SQLITEDB1.sqlite;Version=3;");
    

  • 您正在使用的版本是
    SQLite
    version 3,DLL只是一个不同的版本,但可与
    SQLite
    version 3一起使用。

    SQLite是用C编写的。对于Windows,它以编译的32位(x86)DLL的形式分发。这不能从.NET直接使用,因为它是本机代码,.NET程序通常不喜欢与本机代码交互。它可以用一种叫做COM互操作的东西来完成,但在我的手里,这并不容易,也不漂亮

    在您的问题中,您引用了System.Data.SQLite的下载页面。这是一个与普通的老式SQLite稍有不同的实现。它接受C SQLite并用.NET代码包装它-允许.NET程序使用C本机代码(万岁,其他人完成了这项工作)

    当您将本机代码(C SQLite)和.NET代码(包装函数)放在一个程序集中时,这称为混合模式程序集,最初将所有内容放在一个文件中是有意义的。如果您正在进行开发,或者只在自己的机器上使用SQLite,那么使用混合模式程序集就可以了

    但是,如果您想将应用程序分发给客户,64位Windows的情况已经发生了变化。这是因为混合模式程序集只能在为其编译的体系结构上运行(一个善意的谎言,但对于这个答案是正确的)。从System.Data.SQLite的1.0.80.0版开始,强烈建议您发布: 1.)所有.NET.dll System.Data.SQLite.dll,可在32位或64位体系结构上运行) 及 2.)32位.dll x86\SQLite.Interop.dll 及 3.64位.dll x64\SQLite.Interop.dll

    all.NET包装器(第1项)计算出它在哪个体系结构上运行,并相应地选择32位或64位.dll

    所有这些都在您引用的System.Data.SQLite下载页面上进行了描述,但我发现它令人困惑,所以我提供了我的总结


    您在问题中注意到的版本差异也是由于SQLite和System.Data.SQLite之间的差异造成的。

    以下是不同类型的SQLite连接字符串

    基础

    数据源=c:\mydb.db;版本=3

    此类库不支持版本2

    内存中数据库 SQLite数据库通常存储在磁盘上,但数据库也可以存储在内存中

    数据源=:内存:;版本=3;新=正确

    使用UTF16

    数据源=c:\mydb.db;版本=3;UseUTF16Encoding=True

    使用密码


    数据源=c:\mydb.db;版本=3;密码=我的密码

    System.Data.SQLite也是一个ADO.NET实现,但我没有提到这一点,因为它与您的问题无关。看见