2019-09-04に投稿

【C#】Accessデータベースでデータを追加・更新・削除してみる

先日、データの取得までやったので
さくっと追加・更新・削除もついでにやってみました。
(だいぶ簡単にですが)

プログラムは前回のものを流用しています。

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

画面の修正

画面の修正

画面に追加・更新・削除ボタンを新設します。

プログラム

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
    {
        /// <summary>
        /// 接続文字列
        /// </summary>
        private static string CONNECTION_STRING = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\Sample.accdb; Uid=; Pwd =; ";

        /// <summary>
        /// 起動時の処理.
        /// </summary>
        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;

            // データ検索
            search();

        }

        /// <summary>
        /// データを検索、表示します.
        /// </summary>
        private void search()
        {

            // データ取得
            DataTable dt = new DataTable();
            using (OdbcConnection con = new OdbcConnection(CONNECTION_STRING))
            {
                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;
            dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);
        }

        /// <summary>
        /// 追加ボタンクリックイベント.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_add_Click(object sender, EventArgs e)
        {
            using (OdbcConnection con = new OdbcConnection(CONNECTION_STRING))
            {
                con.Open();

                string sql = "INSERT INTO TBLCAT VALUES(10, '5', 'こなつ', '&#x2640;', '6', '03', '布団')";
                using (OdbcCommand cmd = new OdbcCommand(sql, con))
                {
                    int ret = cmd.ExecuteNonQuery();
                    if (ret != 1)
                    {
                        MessageBox.Show("登録に失敗しました。");
                    }
                }
            }
            // 再検索
            search();
        }

        /// <summary>
        /// 更新ボタンクリックイベント.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_upd_Click(object sender, EventArgs e)
        {
            using (OdbcConnection con = new OdbcConnection(CONNECTION_STRING))
            {
                con.Open();

                string sql = "UPDATE TBLCAT SET FAVORITE = 'CIAOちゅ0る' WHERE NAME = 'りく'";
                using (OdbcCommand cmd = new OdbcCommand(sql, con))
                {
                    int ret = cmd.ExecuteNonQuery();
                    if (ret != 1)
                    {
                        MessageBox.Show("更新に失敗しました。");
                    }
                }
            }
            // 再検索
            search();
        }

        /// <summary>
        /// 削除ボタンクリックイベント.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_del_Click(object sender, EventArgs e)
        {
            using (OdbcConnection con = new OdbcConnection(CONNECTION_STRING))
            {
                con.Open();
                string sql = "DELETE FROM TBLCAT WHERE NAME = 'こなつ'";
                using (OdbcCommand cmd = new OdbcCommand(sql, con))
                {
                    int ret = cmd.ExecuteNonQuery();
                    if (ret != 1)
                    {
                        MessageBox.Show("削除に失敗しました。");
                    }
                }
            }
            // 再検索
            search();
        }
    }
}

データ操作後、再検索できるように検索メソッドに処理を分離し、
新設したボタンそれぞれのクリックイベントにてデータ操作を実行します。

起動してみる

初期表示

追加ボタンをクリックします。

レコード追加

こなつが追加されました。

続いて更新ボタンをクリックします。

データ更新

りくの好物が更新されました。

続いて削除ボタンをクリックします。

データ削除

こなつが削除されました。

まとめ

Access編はこのあたりで終了しそうです。
次回はまだ特に決めていませんが、また何か新しいことを試してみたいですね。

ではでは。

Originally published at www.doraxdora.com

doraxdora

IT関係の仕事をしています/1985年生まれの東京在住/便利なサービスやツール漁りや料理などが好き/2017年~ブログやってます/自分でサービスとか作ってリリースしたい/何かありましたらお気軽にDMどうぞ

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント