我在这里有两个问题
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 ??
答案 0 :(得分:16)
1.0.84.0是SQLite DLL
的最新版本。我建立
SQLite
c#
中的sqlite_conn = new SQLiteConnection("Data Source=C:\SQLITEDATABASES\SQLITEDB1.sqlite;Version=3;");
申请,我的连接字符串看起来像
如下:
SQLite
您使用的版本是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之间存在差异。