【C#】Microsoft Access Driver でAccessデータベースからデータを取得
おはようございます。
昨日に引き続き?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 | そら | ♂ | 6 | 01 | 犬の人形 |
2 | りく | ♂ | 5 | 02 | 人間 |
3 | うみ | ♀ | 4 | 03 | 高級ウェットフード |
4 | こうめ | ♀ | 2 | 04 | 横取りフード |
画面の作成
フォームにデータグリッドビューのみを配置したシンプルな画面を作成します。
プログラム
起動時にデータを取得して表示するようにします。
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と気を付けなければならないことが多く、
ちょっと面倒な感じです。
とはいえ、(ひと)昔前のシステムや、簡単なツールなんかでよく利用されているため
それなりに需要はあるんだろうなとは思いつつ、何かのお役に立てれば。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません