MS-Accessのデータベースを操作する簡単なアプリをC#で書きたい。なぜC#なのかというと、自分はC#に慣れているから。たぶんVBのほうがサンプルはいろいろありそうだけど、VBはほとんどやったことが無いので。
.NETの適当なクラスを使って書くんだろうなーと思ってネットを検索してみたら、Dapperというフレームワークを使うと楽らしい。
StackExchange/dapper-dot-net · GitHub
https://github.com/StackExchange/dapper-dot-net
ちょっと試してみる。
サンプルアプリ
環境はVisual Studio 2013。DapperはNuGet Package Managerを使ってプロジェクトに追加できる。
1. 新規プロジェクトを作成 (C# – Windows Forms Applications)。
2. [TOOLS]-[NuGet Package Manager]-[Manage NuGet Packages for Solutions…]メニューを選択。
3. 右ペインで[Online]を選択し、左上のサーチボックスに”Dapper dot net”と入力。
4. [Install]ボタンを押下してDapper dot netをインストール。
5. [Close]ボタンを押下してダイアログボックスを閉じる。
するとSolution ExplorerのReferencesにDapperが追加されているはず。
6. テストに使うデータベースに合わせて適当にコードを書く。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
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 Dapper; namespace Updater { public class Connection { public string ConnectionString { get; private set; } public Connection() { var path = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "data.mdb"); ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path; } } public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { using (var conn = new System.Data.OleDb.OleDbConnection(new Connection().ConnectionString)) { conn.Open(); // Look for the records. var sql = @"SELECT * FROM users WHERE name like @ItemName"; var param = "%Suzuki%"; var rows = conn.Query(sql, new { ItemName = param }).ToList(); Console.WriteLine("count = {0}", rows.Count); foreach (var row in rows) { Console.WriteLine(row.name); } // Update the record. sql = @"UPDATE backOrders SET arrival = '2/5/2015' WHERE id = @Id AND arrival IS NULL"; var count = conn.Execute(sql, new { Id = 123456 }); Console.WriteLine("count = {0}", count); conn.Close(); } } } } |
見通しが良いコードが書ける。いい感じ。
参考サイト
C# + MS Accessで、OLE DB接続にてDapperを使う – メモ的な思考的な
http://thinkami.hatenablog.com/entry/2014/06/17/045753
ORMとかdapper dot netについてお話させていただきました – きよくらの備忘録
http://kiyokura.hateblo.jp/entry/20131014/p1
参考までに、.NET標準のSystem.Data.OleDbを使った例が以下にある。
NonSoft – アクセスMDBを操作するサンプル(C#.NET)
http://homepage2.nifty.com/nonnon/SoftSample/CS.NET/SampleAccessMdb.html