C# アプリケーション開発

VisualStudio2019でSQLiteを利用する(SQLite.orgからDLLをダウンロード)

投稿日:2020年6月18日 更新日:

このページでは、Visual Studio 2019にてインストール等の作業が不要な実行ファイル配布型のWindowsアプリでSQLiteを利用するためにあれこれ必要な点をまとめています。

すでにSQLiteのDBの準備が出来ている方は、下部の「参照の設定」からご覧になってください。

NuGetパッケージのインストールからSQLiteを利用したい場合は、こちらのページをご参照ください。

このページの内容

SQLiteとは

SQLiteはフリーで利用でき、様々なプラットフォームで利用でき、1つのデータベースを1つのファイルとして扱えるため、不要になれば削除すればよく、サーバーレスで利用できるなどの特徴があります。

GUIを利用したデータベースの作成

DB Browser for SQLiteのDownloadページから、各PC環境にあったものを取得し、インストールしてください。

DB Browser起動画面
DB Browser for SQLiteの起動画面

左上の[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]をクリックし、

SQLiteホームページ

画面下部の“Precompiled Binaries for .NET”のリンク [download page]へ移動。

PrecompiledBinariesfor.NETのDownload pageへ
“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 の~”といった例外エラーが発生します。

64bitアプリの場合の注意事項

ソースコード

まずはヘッダ追加

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  ※参照設定に利用したダウンロード一式に入っています
を配置してください。

※デバッグ時にも必要ですので、お忘れなく!!

以上です。


更新
8/7 NuGetパッケージのインストールを利用する場合の説明ページへのリンクを追加

Follow me!

-C#, アプリケーション開発
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

no image

【C#】【VBScript】アプリケーションの自動再起動

このページの内容 この機能を作成した理由ソースコード この機能を作成した理由 24H稼働している工場等のクラサバ系のシステムで、サーバー側ソフトが原因不明のハングアップをしてしまい、夜中に呼び出しを受 …

no image

【VBScript】管理者権限でVBScriptを実行させる

このページの内容 どんな時にこの機能が必要になるかソースコード どんな時にこの機能が必要になるか このページのタイトルにある通りですが、管理者権限が必要になるフォルダ内のファイルの編集などをVBSri …

GASの利用 ~Webアプリでスプレッドシートの値を表示する~

このページの内容 スプレッドシートの値の読み込みと書き込み実際にやってみる初回実行時のみ必要になる作業について実行した結果このアプリを修正していく場合 スプレッドシートの値の読み込みと書き込み GAS …

GASの利用 ~スプレッドシートの値が取得できない or 想定と異なる場合~

getValuesでスプレッドシートの値を取得しようとした際に、・値が取得できない・取得した値が想定していたものと違うという状況に遭遇した場合について、このページでは記載しています。 ※このページの …

no image

MP4ファイルから字幕データの抽出

このページでは、Windows10にてffmpegとPowershellを利用して、MP4ファイルから字幕データを抽出する方法を説明しています。 使用するMP4ファイルについてffmpegの取得と字幕 …

このサイトの管理者について

1980年代生まれ
石川県在住

メーカー2社経験後に退社

1年程度自由に在職中はできなかったことにチャレンジ

その後コロナの影響でなかなか仕事が見つかりませんでしたが、無事就職

現在はシステム会社に勤務中

PAGE TOP