質問するログイン新規登録
C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

4237閲覧

DataGridViewにforeachでテーブルの中身を表示したい

Fumiya.F

総合スコア1

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/12/15 05:59

編集2021/12/15 06:19

0

0

はじめまして、現在C#を学習しているものです。

開発環境
・VS Express 2017 for Windows Desktop
・MariaDB 10.6
・mysql-connector-net-8.0.27

タイトルの通りですが、下記コードですと目的の一覧が表示されます。

C#

1 public void LoadData() 2 { 3 try 4 { 5 MySqlConnection dbConnection = ClassDatabase.DbConnect(); 6 DataTable dt = new DataTable(); 7 MySqlDataAdapter mysqlAdp = new MySqlDataAdapter("SELECT * FROM 明細", dbConnection); 8 mysqlAdp.Fill(dt); 9 this.dgv.DataSource = dt; 10 dgv.Columns[0].Visible = false 11 dgv.Columns[3].Visible = false; 12 dgv.Columns[7].Visible = false; 13 dbConnection.Close(); 14 } 15 catch (MySqlException mse) 16 { 17 MessageBox.Show(mse.Message, "データ取得エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); 18 } 19 }

一覧をforeachで表示させたいのですが、どのように書いたらよいでしょうか?
雰囲気としてはこのような感じですか?

C#

1 public void LoadData() 2 { 3 try 4 { 5 MySqlConnection dbConnection = ClassDatabase.DbConnect(); 6 DataTable dt = new DataTable(); 7 MySqlDataAdapter mysqlAdp = new MySqlDataAdapter("SELECT * FROM 明細", dbConnection); 8 9 foreach (DataRow dr in dt.Rows) 10 { 11 dgv.Rows.Add(dr); 12 } 13 14 dbConnection.Close(); 15 } 16 catch (MySqlException mse) 17 { 18 MessageBox.Show(mse.Message, "データ取得エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); 19 } 20 }

以上、ご教示頂けますと幸いです。宜しくお願い致します。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/12/15 06:08

開発環境(Visual Studio, MySQL, Connector/NET のバージョンなど)を質問欄を編集して追記してください。 > 一覧をforeachで表示させたいのですが、どのように書いたらよいでしょうか? 普通はそんなことをすることはあり得ないくて、あなたが最初にやったように DataTable 取得して DataGridView にバインドする以外はないと思うのですが、それでもやりたい理由は何ですか?
Fumiya.F

2021/12/15 06:23

ご指摘頂きありがとうございます。 Connector/NETに関してよく理解していないのですが、mysql-connector-net-8.0.27ということでしょうか?
退会済みユーザー

退会済みユーザー

2021/12/15 07:01 編集

Connector/NET というのは Oracle 製品ですが、mysql-connector-net-8.0.27 は同じものですか? https://dev.mysql.com/downloads/connector/net/ MySql.Data.dll v8.0.27 を使っていればたぶん同じと思いますが(細かいことを言うと GAC やレジストリに登録されたりするところが違うかもしれませんが、そこは今回の話とは関係なさそうなので気にしなくて良さそう) こちらの質問にも答えてください。 > 一覧をforeachで表示させたいのですが、どのように書いたらよいでしょうか? 普通はそんなことをすることはあり得ないくて、あなたが最初にやったように DataTable 取得して DataGridView にバインドする以外はないと思うのですが、それでもやりたい理由は何ですか?
Fumiya.F

2021/12/15 07:16

すみません詳しいことは分からないです。。 > 普通はそんなことをすることはあり得ないくて、あなたが最初にやったように DataTable 取得して DataGridView にバインドする以外はないと思うのですが、それでもやりたい理由は何ですか? 簡単に言いますと課題のようなものです。今後、foreachでDataGridViewに表示をする必要があるとご指摘を受けましたので、その課題をこなすため学習していた所存です。
退会済みユーザー

退会済みユーザー

2021/12/15 07:30

今思い出したのですが、以前、MariaDB の char-set がデフォルトで utf8mb3 で、それを C# アプリで ADO.NET + Oracle 製プロバイダ (Connector/NET) を利用して使おうとしたら、その Connector/NET が utf8mb3 をサポートしてなかったという話がありました。 https://teratail.com/questions/371949 Oracle 製の MySQL, MySQL for Visual Studio, Connector/NET を一式 Oracle のインストーラーを使ってインストールして使った方が、相性の問題に悩まなくて済むかもしれません。
退会済みユーザー

退会済みユーザー

2021/12/15 07:38

> 簡単に言いますと課題のようなものです。 普通やらないこと(はっきり言ってあまり意味がなさそうなこと)を考えるのはちょっとアレなので、深くは考えてないですが・・・ 例えば、 データソース ⇒ BindingSource ⇒ DataGridView という構成にして、foreach で BindingSource に 1 レコードずつ追加していくとか?
Fumiya.F

2021/12/15 08:00

その問題私も経験しました。環境は準備して頂いたものを利用していたのですがそういうことだったんですね。勉強になりました、ありがとうございます。 正直に言いますと調べてもなかなか解決できず、変える必要があるのかな?と思いましたが上司のお言葉でしたので。。 了解致しました、少し時間がかかるかもしれませんがやってみます。ご教示頂きありがとうございます。
退会済みユーザー

退会済みユーザー

2021/12/15 08:29

> foreachでDataGridViewに表示をする必要がある どういうケースなんだろう… DataSourceにDataTableをバインドしてあれば、DataTable側の行を増やせば、DataGridViewの行も増えますが。
退会済みユーザー

退会済みユーザー

2021/12/15 08:52

> 上司のお言葉でしたので。。 どういうシナリオでそういうことをするのかなど上司の方の意図を確認することをお勧めします。データを取得するのに時間がかかるが全部取得するのを待ってられないから取得できた毎に順次表示していくとかのシナリオがあるのかも。
dodox86

2021/12/15 12:57

> 上司のお言葉でしたので。。 悪いケースだと、発言した当事者自身が分かっていない場合もあります。「〜でできるんじゃないの?知らんけど。」くらいの軽いアドバイスだったりするので、鵜呑みにはできません。ましてやこのような場で第三者には判断できません。
退会済みユーザー

退会済みユーザー

2021/12/18 03:51

「一覧をforeachで表示」というのは結局どういうことがしたいのでしょう、上司の方の意向とか分かりましたか? 自分で立てたスレッドはクローズするまでフォロー願います。
guest

回答1

0

自己解決

ご連絡が遅くなり本当に申し訳ありません。
現状をお話しますと別プロジェクトに参画することになり、一旦学習中のC#から離れることになりました。
また、今回の質問に関しましても上司に何故foreachが必要なのか確認が取れておりません。
今後の私の為にも聞いておくべきだと理解はしておりますが、少し聞きづらい状況でして、お察し頂けたら幸いです。。
本当に皆さま有用なご回答をありがとうございました。いつかタイミングを見てforeachの件を上司に確認します。

投稿2021/12/21 06:19

Fumiya.F

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問