web-dev-qa-db-ja.com

C#SQlite接続文字列形式

ここに2つの質問があります

1)ここからSQLiteをダウンロードしました: SQLite Webサイト そして.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に変更する必要がありますか?

7
Kairan
  1. 混合のものを選ぶ必要があります。
  2. 1.0.84.0は、SQLite DLLの最新バージョンです。 c#にもSQLiteを使用してアプリケーションを作成しましたが、接続stringは次のようになります。

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

使用しているバージョンはSQLiteバージョン3で、DLLは別のバージョンですが、SQLiteバージョン3で動作します。

18
Max

以下は、異なるタイプのSqlite接続文字列です

基本

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

バージョン2は、このクラスライブラリではサポートされていません。

インメモリデータベース SQLiteデータベースは通常ディスクに保存されますが、データベースはメモリに保存することもできます。

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

TF16を使用

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

パスワード付き

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

5
Ramgy Borja

SQLiteはC++で書かれています。 Windowsの場合、コンパイルされた32ビット(x86).dllとして配布されます。これはネイティブコードであり、.NETプログラムは通常、ネイティブコードとの対話を好まないため、.NETから直接使用することはできません。それはCOM相互運用機能と呼ばれるもので行うことができますが、私の手には簡単でもきれいでもありません。

あなたの質問では、System.Data.SQLite用のダウンロードページを参照しています。これは、従来のSQLiteとは少し異なる実装です。それはC++ SQLiteを取り、それを.NETコードでラップします-.NETプログラムによるC++ネイティブコードの使用を可能にします(やったー、他の誰かが仕事をしました)。

ネイティブコード(C++ SQLite)と.NETコード(ラッパー関数)の両方が1つのアセンブリにまとめられている場合(混合モードアセンブリと呼ばれます)、元々はすべてを1つのファイルに入れるのが理にかなっています。開発を行っている場合、または自分のマシンでSQLiteのみを使用している場合は、混合モードのアセンブリを使用しても問題ありません。

ただし、アプリケーションを顧客に配布したい場合は、64ビットWindowsで状況が変わりました。これは、混合モードアセンブリは、コンパイルされたアーキテクチャでのみ実行できるためです(白い嘘ですが、この回答には当てはまります)。 System.Data.SQLiteのバージョン1.0.80.0以降、以下を配布することを強くお勧めします。1。)32ビットまたは64ビットアーキテクチャで実行できるすべての.NET .dll System.Data.SQLite.dll)AND 2 。)32ビットの.dll x86\SQLite.Interop.dllおよび3.64ビットの.dllx64\SQLite.Interop.dll

すべての.NETラッパー(アイテム1)は、どのアーキテクチャで実行されているかを判断し、それに応じて32ビットまたは64ビットの.dllを選択します。

これはすべて、参照したSystem.Data.SQLiteダウンロードページで説明されていますが、混乱していることがわかったので、要約を示します。

質問で指摘したバージョンの不一致は、SQLiteとSystem.Data.SQLiteの違いによるものでもあります。

1
VictorEE