2019-06-26に投稿

【WPF】PostgreSQL に接続してデータを操作(登録、更新、削除)してみる

おはようございます。

前回に引き続き PostgreSQL を使って、登録、更新、削除をしてみたいと思います。

前回の記事はこちら。
【WPF】PostgreSQL に接続してデータを取得して表示する

プログラムの修正

追加処理の修正

MainWindow.xaml.cs

        /// <summary>
        /// 追加ボタンクリックイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void add_button_Click(object sender, RoutedEventArgs e)
        {
            logger.Info("追加ボタンクリック");

            // データを追加する
            // PgDbContext に変更
            //using (var conn = new SQLiteConnection("Data Source=SampleDb.sqlite"))
            using (var context = new PgDbContext())
            {
                // データ作成
                // テーブルはコンテキスト経由でアクセスする
                //var table = context.GetTable<Cat>();
                Cat cat = new Cat();
                cat.No = 5;
                cat.No = 5;
                cat.Name = "こなつ";
                cat.Sex = "♀";
                cat.Age = 7;
                cat.Kind = "01";
                cat.Favorite = "布団";
                // データ追加
                // コンテキスト経由でエンティティを追加
                //table.InsertOnSubmit(cat);
                context.Cats.Add(cat);
                // DBの変更を確定
                // メソッド変更
                //context.SubmitChanges();
                context.SaveChanges();
            }

            // データ再検索
            searchData();
            MessageBox.Show("データを追加しました。");
        }

更新処理

MainWindow.xaml.cs

        /// <summary>
        /// 更新ボタンクリックイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void upd_button_Click(object sender, RoutedEventArgs e)
        {
            logger.Info("更新ボタンクリック");

            // 選択チェック
            if (this.dataGrid.SelectedItem == null)
            {
                MessageBox.Show("更新対象を選択してください。");
                return;
            }

            // データを更新する
            // PgDbContext に変更
            //using (var conn = new SQLiteConnection("Data Source=SampleDb.sqlite"))
            using (var context = new PgDbContext())
            {
                // 対象のテーブルオブジェクトを取得
                // テーブルはコンテキスト経由でアクセスする
                //var table = context.GetTable<Cat>();
                var table = context.Cats;
                // 選択されているデータを取得
                Cat cat = this.dataGrid.SelectedItem as Cat;
                // テーブルから対象のデータを取得
                var target = table.Single(x => x.No == cat.No);
                // データ変更
                target.Favorite = "高いところ";
                // DBの変更を確定
                // メソッド変更
                //context.SubmitChanges();                
                context.SaveChanges();
            }

            // データ再検索
            searchData();

            MessageBox.Show("データを更新しました。");
        }

 

削除処理

MainWindow.xaml.cs

        /// <summary>
        /// 削除ボタンクリックイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void del_button_Click(object sender, RoutedEventArgs e)
        {
            logger.Info("追加ボタンクリック");

            // 選択チェック
            if (this.dataGrid.SelectedItem == null)
            {
                MessageBox.Show("削除対象を選択してください。");
                return;
            }

            // データを削除する
            // PgDbContext に変更
            //using (var conn = new SQLiteConnection("Data Source=SampleDb.sqlite"))
            using (var context = new PgDbContext())
            {
                // 対象のテーブルオブジェクトを取得
                // テーブルはコンテキスト経由でアクセスする
                //var table = context.GetTable<Cat>();
                var table = context.Cats;
                // 選択されているデータを取得
                Cat cat = this.dataGrid.SelectedItem as Cat;
                // テーブルから対象のデータを取得
                var target = table.Single(x => x.No == cat.No);
                // データ削除
                // メソッド変更
                //table.DeleteOnSubmit(target);
                table.Remove(target);
                // DBの変更を確定
                context.SaveChanges();
            }

            // データ再検索
            searchData();
            MessageBox.Show("データを削除しました。");
        }

 

まとめ

サクッとした記事になりましたが、ひとまず PostgreSQL はここまでとして次回は Oracle を試してみたいと思います。

ソースはこちら

GitHub

ではでは。

Originally published at www.doraxdora.com

view_list WPFでPostgreSQLを使う
第1回 【WPF】PostgreSQL に接続してデータを取得して表示する
第2回 【WPF】PostgreSQL に接続してデータを操作(登録、更新、削除)してみる

doraxdora

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

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

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

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

ボードとは?

関連記事

コメント