この記事では、C#からSQLiteのデータベースに接続する方法についてご説明します。
【動画】C#からSQLiteのデータベースに接続する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
SQLiteConnectionインスタンスを生成し、SQLiteのデータベースに接続するのに必要な接続文字列を参照してSQLiteのデータベースに接続します。
コードの流れ
SQLiteのデータベースに接続する前準備
C#からSQLiteのデータベースに接続するには、「System.Data.SQLite.Core」と呼ばれるパッケージが必要です。
「System.Data.SQLite.Core」のインストール
【手順1】NuGetパッケージの管理を選択する
ソリューションエクスプローラでプロジェクト名を右クリックし、NuGetパッケージの管理を選択します。
【手順2】「参照」を選択し、「System.Data.SQLite.Core」と入力する
「参照」を選択し、「System.Data.SQLite.Core」と入力します。
(この「System.Data.SQLite.Core」の文字列をコピペしてください)
【手順3】「System.Data.SQLite.Core」が表示されるので選択し、「インストール」ボタンをクリックする
「System.Data.SQLite.Core」が表示されるので選択し、「インストール」ボタンをクリックします。
【手順4】変更のプレビューダイアログが表示さるので、「OK」ボタンをクリックする
変更のプレビューダイアログが表示さるので、「OK」ボタンをクリックします。
「OK」ボタンクリック後は、インストール処理が実行されて参照が追加されます。
【手順5】インストールが完了したことを確認する
インストールが完了したことを確認します。
以下の画面のとおり「インストール済み」と表示されていればインストールは完了しています。
以上で「System.Data.SQLite.Core」と呼ばれるパッケージのインストールが完了し、C#からSQLiteへの接続が可能となります。
SQLiteのデータベースに接続する前準備は終了となります。
C#のコード(例)
App.configのコード
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup> <appSettings> <!-- 接続文字列 --> <add key="DBConnString" value="Data Source={0};Version=3" /> <!-- 接続したいSQLiteのデータベースファイル名 --> <add key="DBPath" value="C:¥work¥10_勉強¥21_C#¥0018¥0018_DB01.db" /> </appSettings> </configuration>
コードの説明
以上のコードは、SQLiteのデータベースに接続するのに必要な接続文字列を「DBConnString」というキーに設定しているコードです。
10行目は、SQLiteのデータベースに接続するのに必要な接続文字列を「DBConnString」というキーに設定しているコードです。
13行目は、SQLiteのデータベースファイルのフルパスを「DBPath」というキーに設定しているコードです。
この「DBConnString」と「DBPath」のキーの値を、フォーム側のコードが参照して使います。
ちなみに、今回接続しようとしているデータベースファイル「0018_DB01.db」は以下のフォルダに格納しています。
フォームのコード
using System; using System.Data; using System.Windows.Forms; using System.Data.SQLite; using System.Configuration; namespace wfcs_0018 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // App.configのappSettingsタグ内に記述した「DBConnString」のキーの値を取得して変数「connStrTemplate」に格納する string connStrTemplate = ConfigurationManager.AppSettings["DBConnString"]; // App.configのappSettingsタグ内に記述した「DBPath」のキーの値を取得して変数「DBPath」に格納する string DBPath = ConfigurationManager.AppSettings["DBPath"]; // connStrTemplateの{0}の部分を、「DBPath」の値に置き換える string connectionString = string.Format(connStrTemplate, DBPath); // SQLiteConnectionインスタンスを作成し、接続文字列を使用してデータベースに接続する using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { // 接続を開く connection.Open(); // データベース接続を閉じる connection.Close(); } } } }
注目すべきコード①
最初に見て頂きたいのは4行目です。
using System.Data.SQLite;
コードの説明
「System.Data.SQLite」は、C#からSQLiteのデータベースに接続するのに必要な名前空間です。
「System.Data.SQLite」は「「System.Data.SQLite.Core」のインストール」の説明でお話したパッケージのことです。
C#からSQLiteへの接続にはこの「System.Data.SQLite」が必要になりますが、「「System.Data.SQLite.Core」のインストール」の説明でお話した「System.Data.SQLite.Core」を事前にインストールをしておかないとエラーになります。
なので、忘れずに「System.Data.SQLite.Core」をインストールしておきましょう。
注目すべきコード②
次に見て頂きたいのは20行目から23行目です。
// App.configのappSettingsタグ内に記述した「DBConnString」のキーの値を取得して変数「connStrTemplate」に格納する string connStrTemplate = ConfigurationManager.AppSettings["DBConnString"]; // App.configのappSettingsタグ内に記述した「DBPath」のキーの値を取得して変数「DBPath」に格納する string DBPath = ConfigurationManager.AppSettings["DBPath"];
コードの説明
以上のコードは、App.configのappSettingsタグ内に記述した「DBConnString」「DBPath」のキーの値を取得して変数に格納するコードです。
「DBConnString」のキーの値は変数「connStrTemplate」に、「DBPath」のキーの値は変数「DBName」に格納します。
注目すべきコード③
次に見て頂きたいのは26行目です。
// connStrTemplateの{0}の部分を、「DBPath」の値に置き換える string connectionString = string.Format(connStrTemplate, DBPath);
コードの説明
以上のコードは、connStrTemplateの{0}の部分を、「DBPath」の値に置き換える処理のコードです。
connStrTemplateの{0}の部分を、「DBPath」の値に置き換える、とはどういうことかというと、{0}の部分をSQLiteのデータベースのフルパスに置き換える、ということです。
今回は接続文字列と、SQLiteのデータベース名を分けてそれぞれ「DBConnString」と「DBPath」とキーを分けてあるので、フォームのコード側で接続文字列と、SQLiteのデータベース名を一つの文字列に組み立てています。
参考までに、string.Format実行前と実行後の状態を以下にお見せします。
以上のように、{0}の部分が「C:¥work¥10_勉強¥21_C#¥0018¥0018_DB01.db」に置き換わっています。
Data Source={0};Version=3
Data Source=C:¥work¥10_勉強¥21_C#¥0018¥0018_DB01.db;Version=3
注目すべきコード④
次に見て頂きたいのは29行目から37行目です。
// SQLiteConnectionインスタンスを作成し、接続文字列を使用してデータベースに接続する using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { // 接続を開く connection.Open(); // データベース接続を閉じる connection.Close(); }
コードの説明
以上のコードは、SQLiteConnectionインスタンスを生成し、SQLiteへの接続文字列を使用してデータベースに接続する処理のコードです。
続けてSQL Serverのデータベースの接続を閉じています。
コードの詳細
29行目のコードでは、App.configから取得したSQLiteのデータベースの接続情報(connectionString)を元にSQLiteConnectionインスタンスを作成しています。
32行目のコードでは、生成したSQLiteConnectionインスタンスのOpenメソッドを実行してSQLiteのデータベースに接続しています。
35行目のコードでは、SQLiteのデータベースの接続を閉じています。
動作確認
以下の動画でご確認ください。
【注意】参照設定が必要です
一つ注意点があるのですが、先ほどのコードを動かすには参照設定が必要です。
「System.Configuration」の項目を追加しないと、「ConfigurationManager」が存在しないとのことでエラーになってしまいます。
本コードを実行する際は、「System.Configuration」の項目を追加しましょう。
最後に
この記事では、C#からSQLiteのデータベースに接続する方法についてご説明します。
C#からSQLiteのデータベースに接続したい時は本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。