Kai*_*ran 7 .net c# database sqlite
我这里有两个问题
1)我从这里下载了SQLite:SQLite网站 和.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 ??
Max*_*Max 18
1.0.84.0是该版本的最新版本SQLite DLL.我创建了一个应用程序SQLite太c#,我的连接字符串如下所示:
sqlite_conn = new SQLiteConnection("Data Source=C:\SQLITEDATABASES\SQLITEDB1.sqlite;Version=3;");
Run Code Online (Sandbox Code Playgroud)您使用的版本是SQLite版本3,DLL只是一个不同的版本,但适用于SQLite版本3.
小智 5
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 之间的差异造成的。
以下是不同类型的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;