【C#】C#からAccessのテーブルデータを取得するには
【C#】C#からAccessのテーブルデータを取得するには

【C#】C#からAccessのテーブルデータを取得するには

この記事では、C#からAccessのテーブルデータを取得する方法についてご説明します。

すぐにソースコードを見たい場合はこちらをクリック

Table of Contents

Toggle

【動画】C#からAccessのテーブルデータを取得する実際の動き

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

OleDbConnectionオブジェクトを作成し、Accessのデータベースファイルに接続するのに必要な接続文字列を参照してAccessのデータベースに接続します。

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

取得したテーブルデータをデータテーブルに格納してコンソールに表示させています。

今回は取得したテーブルデータを表示する方法に、コンソールへの表示を行っています。

コードの流れ STEP.1Accessのデータベースファイルに接続するのに必要な接続文字列を用意するAccessのデータベースファイルに接続するのに必要な接続文字列を用意します。 STEP.2STEP.1で用意した接続文字列を元に、OleDbConnectionオブジェクトを作成する STEP.1で用意した接続文字列を元にOleDbConnectionオブジェクトを作成します。 STEP.3OleDbConnectionオブジェクトのOpenメソッドを実行してAccessのデータベースに接続する OleDbConnectionオブジェクトのOpenメソッドを実行してAccessのデータベースに接続します。 STEP.4SQLのSELECT文を実行してテーブルデータを取得する SQLのSELECT文を実行してテーブルデータを取得します。 STEP.5STEP.4で取得したAccessのテーブルデータをデータテーブル(DataTable)に格納する STEP.4で取得したAccessのテーブルデータをデータテーブル(DataTable)に格納します。 STEP.6データテーブル(DataTable)に格納したAccessのテーブルデータをコンソールに表示する データテーブル(DataTable)に格納したAccessのテーブルデータをコンソールに表示します。 目次へ戻る

Accessのテーブルデータの例

今回は次のAccessのテーブルデータを用意しました。

今回は社員番号が1001の名前のデータ(山田太郎)を取得してみたいと思います。

取得した結果を「出力」の画面に表示させた結果は下の通りです。

「出力」の画面に、Accessのテーブルから取得した、社員番号が1001の名前のデータ(山田太郎)が表示されており、正常にAccessのテーブルからデータが取得できたことが確認できます。

目次へ戻る

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="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}" /> <!-- Accessのデータベースファイルのパス --> <add key="DBPath" value="C:\work\10_勉強\21_C#\0004\0004.mdb" /> </appSettings> </configuration> 注目すべきコード①

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

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

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

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

フォームのコード using System; using System.Windows.Forms; using System.Data; using System.Data.OleDb; using System.Configuration; namespace wfcs_0004 { 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」のキーの値を取得して変数「dbPathStr」に格納する string dbPathStr = ConfigurationManager.AppSettings["DBPath"]; // connStrTemplateの{0}の部分を、「dbPathStr」の値に置き換える string connectionString = string.Format(connStrTemplate, dbPathStr); // OleDbConnectionインスタンスを生成する using (OleDbConnection connection = new OleDbConnection(connectionString)) { // Accessのデータベースファイルに接続する connection.Open(); // SELECT文を用意する string query = "SELECT 名前 FROM t_syain where 社員番号 = 1001"; // OleDbCommandインスタンスを生成する using (OleDbCommand command = new OleDbCommand(query, connection)) { // OleDbDataAdapterインスタンスを生成する using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) { // DataTableインスタンスを生成する DataTable dt = new DataTable(); // データテーブルにデータを格納する adapter.Fill(dt); // 行の数だけ処理を繰り返すループ foreach (DataRow row in dt.Rows) { // 列の数だけ処理を繰り返すループ foreach (DataColumn column in dt.Columns) { // 現在の行と列の組み合わせから該当するデータテーブルの値をコンソールに出力する Console.WriteLine(row); } } } } // Accessのデータベースファイルの接続を閉じる connection.Close(); } } } } 注目すべきコード①

最初に見て頂きたいのは3行目から5行目です。

using System.Data; using System.Data.OleDb; using System.Configuration;

3行目の「using System.Data」はDataTableクラスを扱うのに必要な名前空間です。

DataTableクラスからインスタンスを生成し、取得したAccessのテーブルデータを格納することができます。

4行目の「using System.Data」はOleDbConnectionクラスを使うのに必要な名前空間です。

OleDbConnectionクラスからインスタンスを生成し、OleDbConnectionインスタンスのOpenメソッドを実行することでAccessのデータベースに接続することができます。

5行目の「using System.Configuration」はConfigurationManagerクラスを使うのに必要な名前空間です。

ConfigurationManagerクラスからインスタンスを生成し、ConfigurationManagerのインスタンスのAppSettingsプロパティに「App.config」のキーを指定することで、「App.config」からキーの値を取得することができます。

例えば、以下の22行目のコードの場合、AppSettingsプロパティに「DBPath」を指定しています。

string dbPathStr = ConfigurationManager.AppSettings["DBPath"];

この「DBPath」はApp.configの「DBPath」のキーを指します。

AppSettingsプロパティに「DBPath」を指定しているので、変数「dbPathStr」には「C:\work\10_勉強\21_C#\0004\0004.mdb”」が格納されます。

注目すべきコード②

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

// App.configのappSettingsタグ内に記述した「DBConnString」のキーの値を取得して変数「connStrTemplate」に格納する string connStrTemplate = ConfigurationManager.AppSettings["DBConnString"]; // App.configのappSettingsタグ内に記述した「DBPath」のキーの値を取得して変数「dbPathStr」に格納する string dbPathStr = ConfigurationManager.AppSettings["DBPath"];

コードの説明

以上のコードは、App.configのappSettingsタグ内に記述した「DBConnString」「DBPath」のキーの値を取得して変数に格納するコードです。

「DBConnString」のキーの値は変数「connStrTemplate」に、「DBPath」のキーの値は変数「dbPathStr」に格納します。

注目すべきコード③

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

// connStrTemplateの{0}の部分を、「dbPathStr」の値に置き換える string connectionString = string.Format(connStrTemplate, dbPathStr);

コードの説明

以上のコードは、connStrTemplateの{0}の部分を、「dbPathStr」の値に置き換える処理のコードです。

connStrTemplateの{0}の部分を、「dbPathStr」の値に置き換える、とはどういうことかというと、{0}の部分をAccessのデータベースファイルのフルパスに置き換える、ということです。

今回は接続文字列と、Accessのデータベースのフルパスを分けてそれぞれ「DBConnString」と「DBPath」とキーを分けてあるので、フォームのコード側で接続文字列と、Accessのデータベースのフルパスを一つの文字列に組み立てています。

参考までに、string.Format実行前と実行後の状態を以下にお見せします。

以上のように、{0}の部分が「C:\work\10_勉強\21_C#\0004\0004.mdb」に置き換わっています。

参考:string.Format実行前

Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}

参考:string.Format実行後

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\work\10_勉強\21_C#\0004\0004.mdb

注目すべきコード④

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

// OleDbConnectionインスタンスを生成する using (OleDbConnection connection = new OleDbConnection(connectionString)) { // Accessのデータベースファイルに接続する connection.Open();

コードの説明

以上のコードは、OleDbConnectionオブジェクトを作成し、Accessのデータベースファイル接続している処理のコードです。

コードの詳細

28行目のコードでは、App.configから取得したAccessのデータベースファイルの接続情報(connectionString)を元にOleDbConnectionインスタンスを作成しています。

31行目のコードでは、生成したOleDbConnectionインスタンスのOpenメソッドを実行してAccessのデータベースファイルに接続しています。

注目すべきコード⑤

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

// SELECT文を用意する string query = "SELECT 名前 FROM t_syain where 社員番号 = 1001"; // OleDbCommandインスタンスを生成する using (OleDbCommand command = new OleDbCommand(query, connection)) { // OleDbDataAdapterインスタンスを生成する using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) { // DataTableインスタンスを生成する DataTable dt = new DataTable(); // データテーブルにデータを格納する adapter.Fill(dt); // 行の数だけ処理を繰り返すループ foreach (DataRow row in dt.Rows) { // 列の数だけ処理を繰り返すループ foreach (DataColumn column in dt.Columns) { // 現在の行と列の組み合わせから該当するデータテーブルの値をコンソールに出力する Console.WriteLine(row); } } } } // Accessのデータベースファイルの接続を閉じる connection.Close();

コードの説明

以上のコードは、Accessのテーブルデータを取得し、取得したデータをコンソールに出力する処理のコードです。

コードの詳細

34行目のコードでは、SELECT文を用意しています。

SELECT文は、社員番号が1001に該当する名前を取得します。

37行目のコードでは、SELECT文を実行するために、SELECT文とOleDbConnectionインスタンス(connection)を指定してOleDbCommandクラスからインスタンスを生成します。

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

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

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

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

49行目のコードは行の数だけ処理を繰り返すループです。

取得したデータが10件ある場合は10回ループ内の処理を繰り返します。

52行目のコードは列の数だけ処理を繰り返すループです。

取得したデータが5列ある場合は5回ループ内の処理を繰り返します。

55行目のコードでは、現在の行と列の組み合わせから該当するデータテーブルの値をコンソールに出力します。

62行目のコードでは、Accessのデータベースファイルの接続を閉じています。

目次へ戻る

動作確認

「Accessのテーブルデータの例」をご覧ください。

目次へ戻る

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

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

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

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

目次へ戻る

最後に

この記事では、C#からAccessのテーブルデータを取得する方法についてご説明しました。

C#からAccessのテーブルデータを取得したいときは本記事を参考にしてみてくださいね。

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

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

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

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

目次へ戻る
📎📎📎📎📎📎📎📎📎📎
BOT