簡體   English   中英

C# SQlite 連接字符串格式

[英]C# SQlite Connection String Format

我在這里有一個兩部分的問題

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 嗎??

  1. 你應該選擇混合的。
  2. 1.0.84.0 是SQLite DLL的最新版本。 我也在c#使用SQLite創建了一個應用程序,我的連接字符串如下所示:

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

您使用的版本是SQLite版本 3,DLL 只是一個不同的版本,但適用於SQLite版本 3。

以下是不同類型的 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;

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 之間的差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM