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

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

ただいまの
回答率

88.80%

C#、WPFとデータベースについて分からないことだらけです

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 4,380

kurosuke___

score 213

 簡単なチュートリアルがしたい

WPFでDataGridを作って、DataGridとデータベースを紐づけてDataGridに内容を表示、そのDataGrid上での編集をデータベースに反映して保存といったものが作ってみたいです。

ですが、ちょっとデータベースについていろいろ調べてもなかなか理解できずにいるので質問させていただきます。

そもそもデータベースはサーバー上に上がっているファイル?にアクセスしないといけないんでしょうか。

ローカルにファイルとしてデータベースが存在していて、アプリ側でそれを読み込んで使うとかそういう感じではないんですか?

実際、上記のようなアプリを作るとき、VSを起動してからの実際のワークフローが知りたいです。

CSVをDataGridに表示するときは、CSVをジェネリック型に読み込んで、ItemsSource?にぶちこんだら表示できましたがそういう感じではないんでしょうか?

初心者ゆえ、とてもばかげた質問をしている可能性もありますが・・・このデータベースとC#の関係に関するもやもやを取っ払いたいです。

抽象的な質問で申し訳ありませんが、お願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+4

CSV はデータです。
データベースはデータではなく、データを保存・検索できるアプリケーションです。

他のアプリケーションはデータベースに接続してそれを通してデータを読み書きします。

データベースのことをアプリケーションと言いましたが、通常のアプリケーションと違ってずっと裏で動いていて機能を提供しています。この提供する機能、この場合はデータを読み書きする機能をサービスと言い、それを提供するものをサーバーと言います。

ですからデータベースはサーバーです。(一部、サーバーとして接続するものではなくアプリケーションに組み込む種類のものもあります)

サービスには色々な種類のものがあり、HTTP サーバー、FTP サーバー、SMTP サーバー、POP サーバーなどが馴染みがあると思います。

このようなサーバーを集めて外部または内部に開放し、それらを使う用途に特化したコンピュータのこともまたサーバーと言います。

データベースを使う時には、データベースをインストールして動かさなければなりません。

ローカルのパソコンはセキュリティー上の理由で外部に対して閉じているよう設定されるので、ローカルのデータベースには通常外部から接続できません。
その場合は外部にサービスを提供している専用のコンピュータ、つまりサーバー上で動いているデータベースに接続する必要があります。

ただし、質問者さんがやりたいのは外部にサービスを提供することではなく、データベースの学習ですから、データベースに接続する自作アプリはローカルにあって外から利用できなくていいはずです。

この場合は、ローカルにデータベースをインストールし、それに接続するのがいいと思います。とりあえず SQL Server Express というデータベースをインストールし、それを使ってください。他にも無料で高性能なデータベースはいくつもありますが、MS 製のこのデータベースであれば、MS 発信の情報が充実しています。データベースに接続して使うライブラリの使用例もこれを前提としています。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/29 09:24

    SQL Server Expressですね、ちょっと試してみます。
    ありがとうございます。

    キャンセル

+1

そもそもデータベースはサーバー上に...アプリ側でそれを読み込んで使う

データベースは広義にはローカルPC上のCSVの読み書きを含むかも知れませんが、一般的には「大量のデータを管理しているDBMS(Database Management Systemのプログラム)がどこかのサーバーで(ローカルPCのこともありますが)常に動いていて、そのDBMSとDBドライバー(ライブラリー)を通じて、DBMSが管理しているデータの操作(読み書き)を行うもの」というイメージだと思います。

上記のようなアプリを作るとき、VSを起動してからの実際のワークフロー...そういう感じではないんでしょうか? 

CSVにせよDBMSにせよデータの表示のさせかたは一通りではありません。大雑把に言えば(A)「データを自前で読み書きしDataGridViewのrowの参照・設定を直接行う」方法と(B)「datasourceを介したバインディングによってデータソースからDataGridViewの表示内容を自動的に結びつける」方法があると思います。

CSVの表示サンプルをみると(A)でやっているものを多く見かけますが、それはCSV内データを単純に全件表示するなら自前で読み込んでも大した手間ではないからだと思います。一方、DBMS上のデータを相手にする場合は(A)も(B)も見かけます。

いずれにせよ「c# datagridview db(or csv) (datasource)」といったキーワードで検索すると参考になるページにヒットすると思いますが、(A)(B)どちらでやっているかに着目すると混乱を避けられると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/29 09:56

    なるほど、大体イメージはつかめました。
    検索ワードの提供ありがたいです!
    ありがとうございます!

    キャンセル

  • 2017/04/29 10:12

    「C#」と「部品のクラス名」を両方指定して検索するのがコツだと思います。GUIだと「Form」か「WPF」のいずれかを指定するのもよいと思います。

    キャンセル

checkベストアンサー

0

私はWPFはつかったことがないのですが、DataGridはASP.netやwindowsフォームにもあり、CSVやデータベースから取得したデータが格納されたDataTableを渡すと表にして表示してくれます。おそらく同様にDataTableを渡すことができると思います。

データベースとは何かということですが、短くいうとプログラムとやり取りするソフトウェアです。ExcelやWordと同じく独自の形式で保存しますし、保存先はデータベース側が管理します。プログラム側はデータベースにデータの扱いを依頼します。依頼する内容は、データの挿入・検索・更新・削除などです。

データベースを適切に使えるようになるには、そこそこの量の学習が必要で、しかも避けては通れないと思われますので、別途時間をとって挑戦してください。

現時点では、WPFの入門書に、データベースを利用したアプリケーションのチュートリアルがある本があると思われますので探してみてはいかがでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/29 23:33

    私の場合はデータベースはミドルウェアと呼びます。単体での利用が想定できないため、ソフトウェアと呼べないため中間的なソフトウェアという意味で使われる言葉です。アプリケーションで無いわけでは無いのですが、アプリケーションと呼ぶのは多くの人が抵抗を感じます。
    データベースと言うのはデータそのものを呼ぶわけではありません。”データベースそのもの”と呼ぶのには違和感を感じます。それは、一連のDBのファイルです。(一つのファイルで無いことが多い。)
    一方、”それを管理するアプリケーション”はDBMS(database management system)とよばれています。
    DBMS、スキーマ(データの定義など)、データ(1つ以上のファイルから成る)で提供する機能(サービス)をデータベースとよぶことが一般的です。
    機能を持たない場合は、CSVと同じく単なるデータもしくはファイルと呼ぶべきものです。

    キャンセル

  • 2017/04/29 23:38 編集

    なるほど、ミドルウェアの方がしっくりきますね!
    ---
    失礼しました、しっくりじゃなくてミドルウェアと呼ぶべきですね。
    基本ソフトや基盤ソフトという言い方は間違いかも知れません。少なくとも一般的とはいえないようです。

    キャンセル

  • 2017/04/30 00:55

    一般的でない呼び方であっても、そう呼ぶ人があると知れて嬉しいです。

    キャンセル

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

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る