C#

【C#】ODBC接続でAccessのデータを取得

AccessのデータはC#から取得して扱うことが可能です。
ODBC接続とOLEDB接続がありますが、本記事ではODBC接続での方法を記載します。

【検証環境】VisualStudio2019 / .NET Core3.1 / Access ver.2109 64bit 

Accessのテーブル準備

Accessにテーブルを準備します。例の如く、Personテーブルを作成します。
ファイルパス「D:\TEST\Database1.accdb 」

OdbcDataAdapter

Accessからデータ取得する方法の一つとして、DataAdapterを利用する方法があります。
DataAdapterは渡したSQLの結果をDataTableに格納することができます。

//接続文字列
string connectionString = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\TEST\Database1.accdb;";
var dataTable = new DataTable();
try
{
    using (var connection = new OdbcConnection(connectionString))
    {
        connection.Open();

        var sql = "SELECT * FROM T_Person WHERE 年齢 >= 25";
        using (var commnad = new OdbcCommand(sql, connection))
        {
            using (var adapter = new OdbcDataAdapter(commnad))
            {
                adapter.Fill(dataTable);
            }
        }
    }
    //DataTableはforeachできないので、AsEnumerableを使う
    foreach (var row in dataTable.AsEnumerable())
    {
        //DataRow["列名"]で値を取得
        var name = row["名前"];
        var age = row["年齢"];
        var bloodType = row["血液型"];
        Console.WriteLine($"{name} {age}歳 {bloodType}型");
        //本田翼 28歳 O型
        //戸田恵梨香 32歳 AB型
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

OdbcDataReader

Accessからデータ取得する方法の一つとして、DataReaderを利用する方法があります。
DataReader は渡したSQLの結果を1行ずつ読み込んで処理することができます。

//接続文字列
string connectionString = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\TEST\Database1.accdb;";
var dataTable = new DataTable();
try
{
    using (var connection = new OdbcConnection(connectionString))
    {
        connection.Open();

        var sql = "SELECT * FROM T_Person WHERE 年齢 >= 25";
        using (var commnad = new OdbcCommand(sql, connection))
        {
            using (var reader = commnad.ExecuteReader())
            {
                //1行ずつ読み込む
                while (reader.Read())
                {
                    //OdbcDataReader["列名"]で値を取得
                    var name = reader["名前"];
                    var age = reader["年齢"];
                    var bloodType = reader["血液型"];
                    Console.WriteLine($"{name} {age}歳 {bloodType}型");
                    //本田翼 28歳 O型
                    //戸田恵梨香 32歳 AB型
                }
            }
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
エンジニアの転職ならこれ!

【第二新卒向け】マイナビジョブ20's

マイナビジョブ20'sは、20代・第二新卒・既卒向けの転職エージェントです。

▼こんな方におすすめ
・はじめて転職しようと思っている
・転職できるだけのスキルが自分にあるか不安
・手厚いサポートを受けたい

【フリーランス向け】 Midworks

Midworksは豊富な案件と「フリーランス」と「正社員」の良いとこ取りをした働き方を実現する手厚い保障が特徴です。

▼こんな方におすすめ
・現在正社員でフリーランスになろうか悩んでいる
・フリーランスとして働いているが、先行きが不安がある  (安定的な案件確保や保障など)
・自分の市場価値を知りたい、見合った案件で参画したい
・今後のキャリアビジョンを踏まえて案件を選びたい