【C#】SQLiteのテーブルデータをC#のdataGridViewに表示するには

この記事では、SQLiteのテーブルデータをC#のdataGridViewに表示する方法についてご説明します。

【動画】SQLiteのテーブルデータをC#のdataGridViewに表示する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


SQLiteConnectionインスタンスを生成し、SQLiteのデータベースに接続するのに必要な接続文字列を参照してSQLiteのデータベースに接続します。

SQLiteのデータベースに接続したら、SQLのSELECT文を実行してテーブルデータを取得します。

取得したテーブルデータをデータテーブルに格納してDataGridViewにデータを表示します。

コードの流れ

STEP.1
SQLiteのデータベースに接続するのに必要な接続文字列を用意する
SQLiteのデータベースに接続するのに必要な接続文字列を用意します。
STEP.2
STEP.1で用意した接続文字列を元に、SQLiteConnectionインスタンスを作成する
STEP.1で用意した接続文字列を元に、SQLiteConnectionインスタンスを作成します。
STEP.3
SQLiteConnectionインスタンスのOpenメソッドを実行してSQLiteのデータベースに接続する
SQLiteConnectionインスタンスのOpenメソッドを実行してSQLiteのデータベースに接続します。
STEP.4
SQLのSELECT文を実行してテーブルデータを取得する
SQLのSELECT文を実行してテーブルデータを取得します。
STEP.5
STEP.4で取得したSQLiteのテーブルデータをデータテーブル(DataTable)に格納する
STEP.4で取得したSQLiteのテーブルデータをデータテーブル(DataTable)に格納します。
STEP.6
データテーブル(DataTable)に格納されたSQLiteのテーブルデータをDataGridViewにデータを表示する
データテーブル(DataTable)に格納されたSQLiteのテーブルデータをDataGridViewにデータを表示します。

SQLiteのデータベースに接続する前準備

C#からSQLiteのデータベースに接続するには、「System.Data.SQLite.Core」と呼ばれるパッケージが必要です。

「System.Data.SQLite.Core」を使うには、「System.Data.SQLite.Core」のインストールが必要なので、お使いの環境で「System.Data.SQLite.Core」がインストールされていない場合は下の内容をご参照ください。

参考 「System.Data.SQLite.Core」のインストールTech-vb.com

フォームとSQLiteのテーブルデータの例

今回は次のフォームとSQLiteのテーブルデータを用意しました。

フォーム上には処理を開始する実行ボタンとSQLiteのテーブルデータを表示させるdataGridViewが設置されています。

dataGridViewには、以下のSQLiteのテーブルデータを表示させます。

DataGridViewに表示させた結果は下の通りです。

dataGridViewに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#¥0020¥0020_DB01.db" />
    </appSettings>
</configuration>

コードの説明

以上のコードは、SQLiteのデータベースに接続するのに必要な接続文字列を「DBConnString」というキーに設定しているコードです。

10行目は、SQLiteのデータベースに接続するのに必要な接続文字列を「DBConnString」というキーに設定しているコードです。

13行目は、SQLiteのデータベースファイルのフルパスを「DBPath」というキーに設定しているコードです。

この「DBConnString」と「DBPath」のキーの値を、フォーム側のコードが参照して使います。

ちなみに、今回接続しようとしているデータベースファイル「0020_DB01.db」は以下のフォルダに格納しています。

フォームのコード

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SQLite;
using System.Configuration;

namespace wfcs_0020
{
    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();

                // SELECT文を用意する
                string query = "select * from syain";

                // SQLiteDataAdapterインスタンスを生成する
                SQLiteDataAdapter adapter = new SQLiteDataAdapter(query, connection);

                // DataTableインスタンスを生成する
                DataTable dt = new DataTable();

                // データテーブルにデータを格納する
                adapter.Fill(dt);

                // DataGridViewにDataTableをバインドしてDataGridViewにデータを表示する
                dataGridView1.DataSource = dt;

                // データベース接続を閉じる
                connection.Close();

            }
        }
    }
}

注目すべきコード①

最初に見て頂きたいのは4行目です。

using System.Data.SQLite;

コードの説明

「System.Data.SQLite」は、C#からSQLiteのデータベースに接続するのに必要な名前空間です。

「System.Data.SQLite」は「SQLiteのデータベースに接続する前準備」の説明でお話したパッケージのことです。

C#からSQLiteへの接続にはこの「System.Data.SQLite」が必要になりますが、「SQLiteのデータベースに接続する前準備」の説明でお話した「System.Data.SQLite.Core」を事前にインストールをしておかないとエラーになります。

なので、忘れずに「System.Data.SQLite.Core」をインストールしておきましょう。

参考 「System.Data.SQLite.Core」のインストールTech-vb.com

注目すべきコード②

次に見て頂きたいのは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#¥0020¥0020_DB01.db」に置き換わっています。

参考:string.Format実行前

Data Source={0};Version=3

参考:string.Format実行後

Data Source=C:¥work¥10_勉強¥21_C#¥0020¥0020_DB01.db;Version=3

注目すべきコード④

次に見て頂きたいのは29行目です。

            // SQLiteConnectionインスタンスを作成し、接続文字列を使用してデータベースに接続する
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))
            {
                // 接続を開く
                connection.Open();

コードの説明

以上のコードは、SQLiteConnectionオブジェクトを作成し、SQLiteのデータベースに接続している処理のコードです。

以上のコードが正常に実行されれば、SQLiteのデータベースに接続されます。

注目すべきコード⑤

次に見て頂きたいのは35行目から47行目です。

                // SQLクエリを作成
                string query = "select * from syain";

                // SQLiteDataAdapterを作成
                SQLiteDataAdapter adapter = new SQLiteDataAdapter(query, connection);

                // DataTableを作成
                DataTable dt = new DataTable();

                // SQLクエリの結果をDataTableに格納
                adapter.Fill(dt);

                // DataGridViewにDataTableをバインド
                dataGridView1.DataSource = dt;

コードの説明

以上のコードは、SQLiteのテーブルデータを取得するSELECT文を用意して実行し、取得したデータをdataGridViewに格納する処理のコードです。

コードの詳細

35行目のコードは、syainテーブルから値を取得するSELECT文です。

実際に取得するデータは下のとおりです。

38行目のコードは、SqlDataAdapterインスタンスを生成し、SELECT文を関連付けます。

SqlDataAdapterインスタンスが生成されたことで、SELECT文を実行することができるようになります。

41行目のコードは、SELECT文を実行して取得したデータを格納するのに必要なDataTableのインスタンス「dt」を生成します。

44行目のコードでは、Fillメソッドを実行するとSELECT文が実行されて、取得したデータが「dt」に格納されます。

47行目のコードでは、取得したSQLiteのテーブルデータをdataGridViewに表示させます。

注目すべきコード⑥

次に見て頂きたいのは50行目です。

                // データベース接続を閉じる
                connection.Close();

コードの説明

以上のコードは、データベース接続を閉じる処理のコードです。

動作確認

「フォームとSQLiteのテーブルデータの例」をご覧ください。

【注意】参照設定が必要です

一つ注意点があるのですが、先ほどのコードを動かすには参照設定が必要です。

「System.Configuration」の項目を追加しないと、「ConfigurationManager」が存在しないとのことでエラーになってしまいます。

本コードを実行する際は、「System.Configuration」の項目を追加しましょう。

最後に

この記事では、SQLiteのテーブルデータをC#のdataGridViewに表示する方法についてご説明しました。

SQLiteのテーブルデータをC#のdataGridViewに表示したいときは本記事を参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら