この記事では、C#からSQLiteのテーブルデータを取得する方法についてご説明します。
【動画】C#からSQLiteのテーブルデータを取得する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
SQLiteConnectionインスタンスを生成し、SQLiteのデータベースに接続するのに必要な接続文字列を参照してSQLiteのデータベースに接続します。
SQLiteのデータベースに接続したら、SQLのSELECT文を実行してテーブルデータを取得します。
取得したテーブルデータをデータテーブルに格納してコンソールに表示させています。
今回は取得したテーブルデータを表示する方法として、コンソールへの表示を行っています。
コードの流れ
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.comSQLiteのテーブルデータの例
今回は次のSQLiteのテーブルデータを用意しました。
今回はidが1のnameのデータ(田中 太一)を取得してみたいと思います。
取得した結果を「出力」の画面に表示させた結果は下の通りです。
「出力」の画面に、SQLiteのテーブルから取得した、idが1のnameのデータ(田中 太一)が表示されており、正常に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#¥0019¥0019_DB01.db" />
</appSettings>
</configuration>
コードの説明
以上のコードは、SQLiteのデータベースに接続するのに必要な接続文字列を「DBConnString」というキーに設定しているコードです。
10行目は、SQLiteのデータベースに接続するのに必要な接続文字列を「DBConnString」というキーに設定しているコードです。
13行目は、SQLiteのデータベースファイルのフルパスを「DBPath」というキーに設定しているコードです。
この「DBConnString」と「DBPath」のキーの値を、フォーム側のコードが参照して使います。
ちなみに、今回接続しようとしているデータベースファイル「0019_DB01.db」は以下のフォルダに格納しています。
フォームのコード
using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SQLite;
using System.Configuration;
namespace wfcs_0019
{
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 sqlStr = "SELECT name FROM syain where id = 1";
// SELECT文を実行するためのSQLiteCommandインスタンスを生成する
SQLiteCommand command = new SQLiteCommand(sqlStr, connection);
// データを格納するためのDataTableインスタンスを生成する
DataTable dt = new DataTable();
// コマンドを実行し、結果をDataTableに格納するためのSQLiteDataAdapterインスタンスを生成する
SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
// アダプターを使用してデータテーブルにデータを格納する
adapter.Fill(dt);
// 行の数だけ処理を繰り返すループ
foreach (DataRow row in dt.Rows)
{
// 列の数だけ処理を繰り返すループ
foreach (DataColumn column in dt.Columns)
{
// 現在の行と列の組み合わせから該当するデータテーブルの値をコンソールに出力する
Console.WriteLine(row);
}
}
// データベース接続を閉じる
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#¥0019¥0019_DB01.db」に置き換わっています。
Data Source={0};Version=3
Data Source=C:¥work¥10_勉強¥21_C#¥0019¥0019_DB01.db;Version=3
注目すべきコード④
次に見て頂きたいのは29行目から33行目です。
// SQLiteConnectionインスタンスを作成し、接続文字列を使用してデータベースに接続する
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
// 接続を開く
connection.Open();
コードの説明
以上のコードは、SQLiteConnectionオブジェクトを作成し、SQLiteのデータベースに接続している処理のコードです。
以上のコードが正常に実行されれば、SQLiteのデータベースに接続されます。
注目すべきコード⑤
次に見て頂きたいのは36行目から48行目です。
// SELECT文を用意する
string sqlStr = "SELECT name FROM syain where id = 1";
// SELECT文を実行するためのSQLiteCommandインスタンスを生成する
SQLiteCommand command = new SQLiteCommand(sqlStr, connection);
// データを格納するためのDataTableインスタンスを生成する
DataTable dt = new DataTable();
// コマンドを実行し、結果をDataTableに格納するためのSQLiteDataAdapterインスタンスを生成する
SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
// アダプターを使用してデータテーブルにデータを格納する
adapter.Fill(dt);
コードの説明
以上のコードは、SQLiteのテーブルデータを取得するSELECT文を用意して実行し、取得したデータをDataTableに格納する処理のコードです。
コードの詳細
36行目のコードは、syainテーブルから、idが1に該当するnameのフィールドの値を取得するSELECT文です。
実際に取得するデータは下のとおりです。
39行目のコードは、SELECT文を実行するために、SELECT文とSQLiteCommandインスタンス(command)を指定してSQLiteCommandクラスからインスタンスを生成します。
42行目のコードは、SELECT文を実行して取得したデータを格納するのに必要なDataTableのインスタンス「dt」を生成します。
45行目のコードは、SQLiteDataAdapterインスタンスを生成し、SELECT文を関連付けます。
SQLiteDataAdapterインスタンスが生成されたことで、SELECT文を実行することができるようになります。
48行目のコードでは、Fillメソッドを実行するとSELECT文が実行されて、取得したデータが「dt」に格納されます。
注目すべきコード⑥
次に見て頂きたいのは51行目から59行目です。
// 行の数だけ処理を繰り返すループ
foreach (DataRow row in dt.Rows)
{
// 列の数だけ処理を繰り返すループ
foreach (DataColumn column in dt.Columns)
{
// 現在の行と列の組み合わせから該当するデータテーブルの値をコンソールに出力する
Console.WriteLine(row);
}
}
コードの説明
以上のコードは、取得したSQLiteのテーブルデータをコンソールに出力する処理のコードです。
コードの詳細
51行目のコードは行の数だけ処理を繰り返すループです。
取得したデータが10件ある場合は10回ループ内の処理を繰り返します。
54行目のコードは列の数だけ処理を繰り返すループです。
取得したデータが5列ある場合は5回ループ内の処理を繰り返します。
57行目のコードでは、現在の行と列の組み合わせから該当するデータテーブルの値をコンソールに出力します。
注目すべきコード⑦
次に見て頂きたいのは62行目です。
// データベース接続を閉じる
connection.Close();
コードの説明
以上のコードは、データベース接続を閉じる処理のコードです。
動作確認
【注意】参照設定が必要です
一つ注意点があるのですが、先ほどのコードを動かすには参照設定が必要です。
「System.Configuration」の項目を追加しないと、「ConfigurationManager」が存在しないとのことでエラーになってしまいます。
本コードを実行する際は、「System.Configuration」の項目を追加しましょう。
最後に
この記事では、C#からSQLiteのテーブルデータを取得する方法についてご説明しました。
C#からSQLiteのテーブルデータを取得したいときは本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。












