この記事では、C#からAccessのデータベースに接続する方法についてご説明します。
【動画】C#からAccessのデータベースに接続する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
OleDbConnectionオブジェクトを作成し、Accessのデータベースファイルに接続するのに必要な接続文字列を参照して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_勉強\10_VBA関連\0207\0207.mdb" />
</appSettings>
</configuration>
注目すべきコード①
最初に見て頂きたいのは8行目と11行目です。
8行目は、Accessのデータベースファイルに接続するのに必要な接続文字列を「DBConnString」というキーに設定しているコードです。
11行目は、Accessのデータベースファイルのパスを「DBPath」というキーに設定しているコードです。
「DBConnString」と「DBPath」のキーの値をフォーム側のコードが参照して使います。
フォームのコード
using System;
using System.Windows.Forms;
using System.Configuration;
using System.Data.OleDb;
using System.IO;
namespace wfcs_0001
{
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();
// Accessのデータベースファイルの接続を閉じる
connection.Close();
}
}
}
}
注目すべきコード①
最初に見て頂きたいのは4行目です。
using System.Data.OleDb;
「System.Data.OleDb」はOleDbConnectionクラスを使うのに必要な名前空間です。
OleDbConnectionクラスからインスタンスを生成し、OleDbConnectionインスタンスのOpenメソッドを実行することでAccessのデータベースに接続することができます。
注目すべきコード②
次に見て頂きたいのは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_勉強\10_VBA関連\0207\0207.mdb」に置き換わっています。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\work\10_勉強\10_VBA関連\0207\0207.mdb
注目すべきコード④
次に見て頂きたいのは28行目から35行目です。
// OleDbConnectionインスタンスを生成
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
// Accessのデータベースファイルに接続する
connection.Open();
// Accessのデータベースファイルの接続を閉じる
connection.Close();
}
コードの説明
以上のコードは、OleDbConnectionオブジェクトを作成し、Accessのデータベースファイルに接続している処理のコードです。
続けてAccessのデータベースファイルの接続を閉じています。
コードの詳細
28行目のコードでは、App.configから取得したAccessのデータベースファイルの接続情報(connectionString)を元にOleDbConnectionインスタンスを作成しています。
31行目のコードでは、生成したOleDbConnectionインスタンスのOpenメソッドを実行してAccessのデータベースファイルに接続しています。
34行目のコードでは、Accessのデータベースファイルの接続を閉じています。
動作確認
以下の動画でご確認ください。
【注意】参照設定が必要です
一つ注意点があるのですが、先ほどのコードを動かすには参照設定が必要です。
「System.Configuration」の項目を追加しないと、「ConfigurationManager」が存在しないとのことでエラーになってしまいます。
本コードを実行する際は、「System.Configuration」の項目を追加しましょう。
最後に
この記事では、C#からAccessのデータベースに接続する方法についてご説明しました。
C#からAccessのデータベースに接続したい時は本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。





