質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1921閲覧

c# dataGridViewからMY SQLへの書き込み

yasu47

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2022/05/10 10:41

  1. Button1という名前のButtonを押して MYSQLのデータベースのDataをdataGridView(dataGridView_mysqlData)に表示をする。
  2. dataGirdViewでDataを追加する。(列の追加はなし、もともとある列の範囲内で行の追加のみ)
  3. Button2という名前のButtonを押して dataGirdViewのDataを、そのままMYSQLに書き込む

としたいのですが、3の所が、どうすれば良いのか分かっています。
ネットを見て UPDATE のコマンドを使うかと想定しましたが、そこから先が進んでいません。
参考となるサイト名 もしくは サンプルプログラムを書いていただけると幸いです。
尚、今回の手法が、そもそも出来ることなのかもわかっておりません。
アドバイスお願いします。

//MYSQL Data読込~ dataGridView に表示 private void button1_Click(object sender, EventArgs e) { // *********************************** // MY SQLのアクセス DataBase読込~Datagridviewへの表示 DataTable dt = new DataTable(); // MySQLへの接続情報 string server = "localhost"; // MySQLサーバ名 string user = "root"; // MySQLユーザ名 string pass = "XXXXXX"; // MySQLパスワード string database = "test"; // 接続するデータベース名 string connectionString = string.Format("Server={0};Database={1};Uid={2};Pwd={3}", server, database, user, pass); MySqlConnection connection = new MySqlConnection(connectionString); connection.Open(); // 接続 connection.Dispose(); Console.WriteLine("MySQLに接続しました!"); MySqlDataAdapter mysqlAdp = new MySqlDataAdapter("SELECT* FROM infotest", connectionString); mysqlAdp.Fill(dt); MessageBox.Show("MySQL接続完了"); dataGridView_mysqlData.DataSource = dt; // ***********************************   } //dataGridViewのDataを MYSQL Data書込み private void button2_Click(object sender, EventArgs e) { // //   ここが思いつかないのです。。。。 //    }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/05/10 11:23 編集

何を何で作っているかぐらいは質問の一行目に書きませんか? (例: Windows Forms アプリを Visual Studio 2022 でフレームワークを .NET Framework 4.8 にして作っています)  前にも同じようなことをお願いしたはずですが、ちゃんと聞いてもらえなかったようで、また同じことをしているのは残念。
yasu47

2022/05/10 11:49

すみませんでした。私の理解不足でした。 Windows フォームアプリケーション(.NET Framework 4.8.04161)  で作っています。 アドバイスよろしくお願いします。
退会済みユーザー

退会済みユーザー

2022/05/10 12:05

上記は質問欄を編集して追加情報として追記していただくようお願いします。ここは「質問への追記・修正の依頼」の場ですので。
guest

回答1

0

ベストアンサー

MySQL のテーブルのレコード一覧を DataGridView に表示し、ユーザーが DataGridView を見て編集した結果を、元のデータベースのテーブルに反映させるというようなことがやりたいこととですよね。

であれば、一度 Visual Studio のデータソース構成ウィザードを使って定番の構成のアプリを作ってみることをお勧めします。スクラッチでゼロからコードを書くのも勉強になるかもしれませんが、ウィザードが作ったコードを見ると理解が深まると思います。

MySQL をインストールした時以下の画像のように MySQL for Visual Studio と Connector/NET も一緒にインストールしたと思いますが、であれば Visual Studio のデータソース構成ウィザードを使えます。VS2022 は 64-bit アプリなので MySQL for Visual Studio が動かないかもしれませんが、その場合は Visual Studio 2019 を使ってください。

イメージ説明

DB が SQL Server の場合ですが、以下のチュートリアルが参考になると思います。MySQL でほぼ同じことができます。

チュートリアル : データベースへのデータの保存 (単一テーブル)
https://docs.microsoft.com/ja-jp/previous-versions/0f92s97z%28v=vs.120%29

10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (VB)
https://github.com/microsoftarchive/msdn-code-gallery-community-0-9-non-alphabetic/tree/master/10%20%E8%A1%8C%E3%81%A7%E3%82%BA%E3%83%90%E3%83%AA%20%21%21%20%E9%9D%9E%E6%8E%A5%E7%B6%9A%E5%9E%8B%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%20%28ADO.NET%29%20%28VB%29

新しいデータ ソースの追加
https://docs.microsoft.com/ja-jp/visualstudio/data-tools/add-new-data-sources?view=vs-2019

・・・のように Visual Studio のデータソース構成ウィザードを利用して型付 DataSet + TableAdapter を作って、それを利用してアプリを作ると、

DataGridview ⇔ BindingSource / BindingNavigator ⇔ DataSet / DataTable ⇔ DataAdapter ⇔ MySQL

という構造のアプリが、ほとんど自分でコードを書くこと無しに作れます。実行結果は以下のようになります。MySQL に付属の DB のデータベース world の country テーブルを使っています。

イメージ説明

このアプリにどういうメリットがあるかと言うと、以下の記事の「非接続型のデータ更新」のセクションの図1と図2を見てください。文章は読まなくてもいいので図だけ見てください。

DB 設計者のための明解 ADO.NET 第 1 回
https://docs.microsoft.com/ja-jp/previous-versions/cc482903%28v=msdn.10%29

図2の DataSet 右側に BindingSource / BindingNavigator 経由で DataGridView が接続されていると思ってください。

ユーザーが DataGridView を操作(行の削除・追加・訂正)した結果は図1にあるように DataSet / DataTable に反映されます。ユーザーの編集操作が終わったら Update メソッドで図1の編集結果が一度に DB に反映されます。そういうアプリが簡単に作れるようにできているのです。

投稿2022/05/10 12:07

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yasu47

2022/05/10 12:29

回答ありがとうございました。参考にさせて頂きます。 私の不手際、申し訳ございませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問