【C#】Microsoft Access Driver でAccessデータベースからデータを取得

C#,開発

おはようございます。

昨日に引き続き?C#の話し。
未だに、Accessを使ったツールやシステムがあって、
個人的にはもうやめようよと思いながら、データを取得するサンプルをやってみました。
(今では他にも素晴らしいDBがありますからね。)

スポンサーリンク

ダウンロード

ダウンロードサイト

ダウンロードサイト

ダウンロードボタンをクリックします。

インストール

ダウンロードした「AccessDatabaseEngine.exe」または「AccessDatabaseEngine_X64.exe」を実行します。

インストールウィザード

インストールウィザード画面が表示されるので「次へ」ボタンをクリックします。

使用許諾契約同意画面

使用許諾契約同意画面が表示されるので、「同意します」にチェックをして「次へ」ボタンをクリックします。

インストール先指定画面

インストール先指定画面が表示されるので、特に指定がなければそのまま「インストール」ボタンをクリックします。

インストール画面

インストール中。しばしお待ちを。

完了画面

完了画面が表示されるので「OK」ボタンをクリックします。

プロジェクトの作成

VisualStudio2017で新しく WindowsForm プロジェクトを作成します。
今回は「SampleAccessDatabase」としました。

データベースの作成

いつもサンプルで使っている、猫のデータをサンプルで使用します。
Access Database は、Windows画面上で右クリック>「新規作成」>「Microsoft Access Database」より、手動で作成してください。

テーブル

列の定義は次の通り。

MSTKIND

  • 区分コード
  • 区分名

TBLCAT

  • 番号
  • 名前
  • 性別
  • 年齢
  • 種別
  • 好物

データ

MSTKIND

区分コード区分名
01キジトラ
02長毛種(不明
03ミケ(っぽい
04サビ
09その他

TBLCAT

No名前性別年齢区分コード好物
1そら601犬の人形
2りく502人間
3うみ403高級ウェットフード
4こうめ204横取りフード

画面の作成

画面

フォームにデータグリッドビューのみを配置したシンプルな画面を作成します。

プログラム

起動時にデータを取得して表示するようにします。

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.Data.Odbc;

namespace SampleAccessDatabase
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // DataGridViewの設定
            dataGridView1.AutoGenerateColumns = false;
            dataGridView1.Columns.Add("No", "No");
            dataGridView1.Columns.Add("Name", "名前");
            dataGridView1.Columns.Add("Sex", "性別");
            dataGridView1.Columns.Add("Age", "年齢");
            dataGridView1.Columns.Add("KbnCd", "種別");
            dataGridView1.Columns.Add("Favorite", "好物");
            dataGridView1.Columns[0].DataPropertyName = "No";
            dataGridView1.Columns[1].DataPropertyName = "Name";
            dataGridView1.Columns[2].DataPropertyName = "Sex";
            dataGridView1.Columns[3].DataPropertyName = "Age";
            dataGridView1.Columns[4].DataPropertyName = "KbnCd";
            dataGridView1.Columns[5].DataPropertyName = "Favorite";

            dataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.Automatic;


            // データ取得
            DataTable dt = new DataTable();
            string connectionString = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\Sample.accdb; Uid=; Pwd =; ";
            using (OdbcConnection con = new OdbcConnection(connectionString))
            {
                con.Open();

                string sql = "SELECT * FROM TBLCAT";
                using (OdbcCommand cmd = new OdbcCommand(sql, con))
                {
                    using (OdbcDataAdapter adapter = new OdbcDataAdapter(cmd))
                    {
                        adapter.Fill(dt);
                    }
                }
            }
            dataGridView1.DataSource = dt;
        }
    }
}

 

起動してみる

初期表示

無事にデータが表示されました。

まとめ

データベースへの接続をいくつか記事に書いてきましたが、
Accessはバージョンや32bit、64bitと気を付けなければならないことが多く、
ちょっと面倒な感じです。

とはいえ、(ひと)昔前のシステムや、簡単なツールなんかでよく利用されているため
それなりに需要はあるんだろうなとは思いつつ、何かのお役に立てれば。

ではでは。

スポンサーリンク


関連するコンテンツ

C#,開発accdb,Access,CSharp,MicrosoftAccessDriver

Posted by doradora