NuGetパッケージのインストールからSQLiteを利用したい場合は、こちらのページをご参照ください。
DLLをSQLite.orgからダウンロードして利用したい場合は、こちらのページ(このページの内容を加筆修正しています)をご参照ください。
このページでは、Visual Studio 2019にてスタンドアロンで動作可能なWindowsアプリ(インストール等の作業が不要)でSQLiteを利用するためにあれこれ必要な点をまとめています。
すでにSQLiteのDBの準備が出来ている方は、下部の「参照の設定」からご覧になってください。
SQLiteとは
SQLiteはフリーで利用でき、様々なプラットフォームで利用でき、1つのデータベースを1つのファイルとして扱えるため、不要になれば削除すればよく、サーバーレスで利用できるなどの特徴があります。
GUIを利用したデータベースの作成
DB Browser for SQLiteのDownloadページから、各PC環境にあったものを取得し、インストールしてください。
左上の[New Database]から、保存先とファイル名を指定するとデータベースファイルの作成が完了します。
次にテーブルを作成する画面が開くので、テーブル名を入力し、各フィールドを追加していきます。
下図では、整数型のField1と文字列型のField2が含まれる”SAMPLE_TABLE”というテーブルを作成しています。
フィールドの型(Type)は
・INTEGER(整数)
・TEXT(文字列)
・BLOB(バイナリ)
・REAL(浮動小数点8バイト)
・NUMERIC(数値型)
で指定します。
フィールドの設定として
・NN:Nullを許容しない
・PK:Primary Key
・AI:Auto Increment(自動採番)
・U:Unique(重複を許容しない)
を指定することができます。
その他にもデフォルト値の設定などがGUI上で行うことができます。
※その他にもデータベースの中身確認、SQLの実行などがこのツール上でできます。
DLLの参照設定
必要となるDLLをSQLiteのホームページからダウンロードしてきますが、今回利用したいDLLは、Download直下からはダウンロードできませんので、次のように進んでいってください。
ページ上部の[Download]をクリックし、
画面下部の”Precompiled Binaries for .NET”のリンク [download page]へ移動。
利用したい環境(FrameworkのVer、作成したいアプリのビット数)を探し、bundleの文字が含まれていないほうをダウンロードし、解凍しておきます。
※今回は64bit版の.Net Framework4.5.1を利用するので、sqlite-netFx451-binary-x64-2013-1.0.112.0 と書かれたリンクからダウンロードしています。
Visual Studioを起動し、SQLiteを利用したいプロジェクトを開きます。
メニューの[プロジェクト]→[参照の追加]を選択。
もしくはソリューションエクスプローラー内の”参照”を右クリックしてメニューを表示し、[参照の追加]を選択。
参照マネージャーが起動するので、ウィンドウ下部にある[参照]をクリックし、先ほどダウンロード&解凍したフォルダを開いて中にあるSystem.Data.SQLite.dllを選択します。
すると以下のようになるので、[OK]をクリックします。
64bitアプリを作成しようとする場合の注意事項
メニューの[プロジェクト]→[***のプロパティ]を開きます。
※***にはプロフェクト名が入ります
プロパティ画面左部の”ビルド”を選択し、[32ビットを選ぶ]に入っているチェックを外してください。
この変更をしないと “System.BadImageFormatException の~”といった例外エラーが発生します。
ソースコード
※このページにあるソースコードはご自由にご利用していただいて問題ありませんが、各自の責任でお願いします。問題や不利益等が発生したとしても当サイトは関知しません。
まずはヘッダ追加
using System.Data.SQLite;
・SELECT文を実行し、SQLDataReaderで受け取る
string DBFilePath = ""; //データベースファイルのパス
string sql;
string result = "";
SQLiteDataReader dataReader;
SQLiteConnection SQLiteCon = new SQLiteConnection("Data Source=" + DBFilePath + ";Version=3"); //DBにパスワード等が設定されている場合は、必要に応じて追記してください。
SQLiteCon.Open();
SQLiteCommand SQLiteCom = SQLiteCon.CreateCommand();
sql = "Select * From sample_table";
SQLiteCom.CommandText = sql;
dataReader = SQLiteCom.ExecuteReader();
if (dataReader.HasRows) //値が取得できているか確認する
{
while (dataReader.Read()) //DataReaderを開いて1行ずつ読み込み、読み取る行がなくなると終了する
{
//dataReaderの値を文字列として取り出す場合
result = dataReader[0].ToString(); //SQLで指定した1列目の値
result = dataReader["Field1"].ToString(); //フィールド名を指定して値を取得する
}
dataReader.Close(); //DataReaderを閉じる。
}
//終了処理
SQLiteCon.Close();
SQLiteCon.Dispose();
・INSERT文やUPDATE文などを実行する
string DBFilePath = ""; //データベースファイルのパス
string sql;
SQLiteConnection SQLiteCon = new SQLiteConnection("Data Source=" + DBFilePath + ";Version=3;"); //DBにパスワード等が設定されている場合は、必要に応じて追記してください。
SQLiteCon.Open();
SQLiteCommand SQLiteCom = SQLiteCon.CreateCommand();
SQLiteCom.Transaction = SQLiteCon.BeginTransaction();
sql = "Insert into sample_table (Field1,Field2) values (1,'1行目のサンプルデータ')"; //Field1に数値の1を、Field2に文字列を挿入
SQLiteCom.CommandText = sql;
SQLiteCom.ExecuteNonQuery();
SQLiteCom.Transaction.Commit();
SQLiteCom.Transaction = SQLiteCon.BeginTransaction();
sql = "Update sample_table Set Field2='1行目のサンプルデータの値を変更' Where Field1=1"; //Field1=1を更新
SQLiteCom.CommandText = sql;
SQLiteCom.ExecuteNonQuery();
SQLiteCom.Transaction.Commit();
//終了処理
SQLiteCon.Close();
SQLiteCon.Dispose();
デバッグ及びリリース時
デバッグやリリース後の各PCで稼働させる際には、同一フォルダ内に、
・ System.Data.SQLite.dll ※参照設定で設定したdllです(デバッグ/リリースフォルダに自動でコピーされているはず)
・ SQLite.Interop.dll ※参照設定に利用したダウンロード一式に入っています
を配置してください。
※デバッグ時にも必要ですので、お忘れなく!!
以上です。