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

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

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

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

2回答

5303閲覧

C# WPFのDataGridにPostgreSQLのデータを表示する

---stax---

総合スコア148

C#

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2017/10/02 06:09

表題の件について質問です
PostgreSQLのサーバーからSELECT文で読みだした結果をWPFのDataGridに表示したいと考えています。

以下のコードはSELECT文で読みだした値をコンソールに表示させることが出来た時のコードです

表の列名を記載したcolumnクラスを追加で記入しておりこれを用いて各列に取得した値をはめ込むのかなと考えました

しかし肝心のfor文の処理の書き方が分からず悩んでいます
まだC#も含めてプログラミング自体つい最近始めたので的外れなことを言っていると思いますがアドバイスお願いいたします

C#

1namespace WpfApplication2 2{ 3 /// <summary> 4 /// MainWindow.xaml の相互作用ロジック 5 /// </summary> 6 public partial class MainWindow : Window 7 { 8 9 10 public MainWindow() 11 { 12 InitializeComponent(); 13 14 var connString = "Server=test;Port=5432;User Id=test_user;Password=test_user;Database=test_server;"; 15 using (var conn = new NpgsqlConnection(connString)) 16 { 17 conn.Open(); 18 19 20 var command = new NpgsqlCommand("select * from lesson2.person", conn); 21 22 var dataReader = command.ExecuteReader(); 23 24 while (dataReader.Read()) 25 { 26 for (int i = 0; i < dataReader.FieldCount; i++) 27 28 { 29 //表示の書き方が分かりません 30 } 31 32 33 34 35 36 public class column 37 { 38 39 public string division_no { get; set; } 40 public int no { get; set; } 41 public string name { get; set; } 42 public string adress { get; set; } 43 public int phs { get; set; } 44 45

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

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

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

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

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

guest

回答2

0

ベストアンサー

c#

1 2ObservableCollection<column> columnRecords = new ObservableCollection<column>(); 3using(NpgsqlDataAdapter adapter = new NpgsqlDataAdapter("select * from lesson2.person", conn)) 4{ 5 DataSet ds = new DataSet(); 6 adapter.Fill(ds); 7 for(int i = 0; i < ds.Tables[0].Rows.Count; i++) 8 { 9 column columnRecord = new column(); 10 columnRecord.division_no = ds.Tables[0].Rows[i]["DBの列名"].ToStirng(); 11 (同様の処理を続け、取り出す) 12 13 14 columnRecords.Add(columnRecord); 15 } 16} 17

var command 以下を変えました。

まだC#も含めてプログラミング自体つい最近始めたので的外れなことを
言っていると思いますがアドバイスお願いいたします

他にもDataBindingの質問もされておられます。
この辺はMVVMを学習するほうがいいと思います。

この処理はModelに書く(別にする)のがいいと思う。
(私だけの思い込みかもしれないが)
「WPF MVVM」なりでググると色々出てきます。

投稿2017/10/02 19:26

283cks

総合スコア138

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

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

---stax---

2017/10/03 00:03

丁寧な回答ありがとうございます。 columnRecord.division_no = ds.Tables[0].Rows[i]["DBの列名"].ToStirng(); 初歩的な質問なのですが上記コードのDBの列名と表記していただいた箇所には[division_no,no,name,adress,phs]といったように各列を入力すればよいでしょうか? 上記の列の書き方で試してみたところエラーが出てしまいます。 おそらく記述の方法だけとは思うのですがよろしければアドバイスお願いいたします
283cks

2017/10/03 03:32

[division_no,no,name,adress,phs]に対応しているDBの列名が分からないので、 こういう書き方をしました。 例えばnameがこの場合のDB、lesson2.personでどうなっているのかが 記載されてないので分かりません。対応するものを書いてね。 あと*で列名全部取るより、対応するものをひとつひとつとっていったほうが いいのかなあっとも思います。
---stax---

2017/10/03 05:49

ありがとうございます division_no,no,name,adress,phsは5つの列名としていました 今回は列指定に書き換え、name列を所得するよう columnRecord.division_no = ds.Tables[0].Rows[i][”name"].ToStirng(); でコードを書きました 丁寧にありがとうございます またよろしくお願いいたします
guest

0

おそらくこんな感じじゃないでしょうか。
http://gushwell.ldblog.jp/archives/52306210.html

投稿2017/10/02 09:17

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

---stax---

2017/10/03 00:03

ありがとうございます 参考にさせていただきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問