C#SQlite连接字符串格式

时间:2013-03-31 04:15:06

标签: c# .net database sqlite

我在这里有两个问题

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

进行连接时,我使用以下命令:

  

sqlite_conn = new SQLiteConnection(“Data Source = db.db; Version = 3; New = True; Compress = True;”);

2)我假设“Version = 3”代表正在使用的SQLite的版本。所以,如果我从上面的链接下载该版本说System.Data.SQLite 1.0.84.0(3.7.15.2)包,那么我应该将Version = 3更改为Version = 3.7.15.2 ??

3 个答案:

答案 0 :(得分:16)

  1. 你应该选择混合的。
  2. 1.0.84.0是SQLite DLL的最新版本。我建立 SQLite c#中的sqlite_conn = new SQLiteConnection("Data Source=C:\SQLITEDATABASES\SQLITEDB1.sqlite;Version=3;"); 申请,我的连接字符串看起来像 如下:

    SQLite
  3. 您使用的版本是SQLite版本3,DLL只是一个不同的版本,但适用于{{1}}版本3.

答案 1 :(得分:4)

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

<强>基本

Data Source=c:\mydb.db;Version=3;

此类库不支持版本2.

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

Data Source=:memory:;Version=3;New=True;

使用UTF16

Data Source=c:\mydb.db;Version=3;UseUTF16Encoding=True;

使用密码

Data Source=c:\mydb.db;Version=3;Password=myPassword;

答案 2 :(得分:1)

SQLite是用C ++编写的。对于Windows,它以编译的32位(x86).dll的形式分发。这不能直接在.NET中使用,因为它是本机代码,.NET程序通常不喜欢与本机代码交互。它可以通过一个名为COM Interop的东西来完成,但在我手中并不容易或漂亮。

在您的问题中,您引用了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

所有.NET包装器(第1项)确定它运行的架构,并相应地选择32位或64位.dll。

所有这些都在您引用的System.Data.SQLite下载页面中描述,但我发现它令人困惑所以我提供了我的摘要。

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