ここに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に変更する必要がありますか?
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で動作します。
以下は、異なるタイプの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;
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の違いによるものでもあります。