C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

【初心者】C#でデータベースのアプリ開発について /shinshin (17/11/14(Tue) 09:42) #85672
Re[1]: 【初心者】C#でデータベースのアプリ開発について /WebSurfer (17/11/14(Tue) 10:25) #85675
│└ Re[2]: 【初心者】C#でデータベースのアプリ開発について /shinshin (17/11/14(Tue) 11:13) #85678
│  └ Re[3]: 【初心者】C#でデータベースのアプリ開発について /WebSurfer (17/11/14(Tue) 11:34) #85680
│    └ Re[4]: 【初心者】C#でデータベースのアプリ開発について /shinshin (17/11/14(Tue) 13:11) #85683
│      └ Re[5]: 【初心者】C#でデータベースのアプリ開発について /shinshin (17/11/14(Tue) 17:43) #85691 解決済み
Re[1]: 【初心者】C#でデータベースのアプリ開発について /魔界の仮面弁士 (17/11/14(Tue) 12:30) #85681
  └ Re[2]: 【初心者】C#でデータベースのアプリ開発について /shinshin (17/11/14(Tue) 13:18) #85684


親記事 / ▼[ 85675 ] ▼[ 85681 ]
■85672 / 親階層)  【初心者】C#でデータベースのアプリ開発について
□投稿者/ shinshin (1回)-(2017/11/14(Tue) 09:42:25)

分類:[C#] 

プログラミング初心者です。

C#を使いデータベースのアプリを開発したい思い。
C#の入門書を購入しました。

入門書の書かれているコードは時間をかければ何をしているのかが何となくわかるレベルです。
クラスやオブジェクト指向のチャプターから進んでいない状況です。
何故こんな事をするのだろうか?一つのブロックで処理するのとブロックをわけて処理するのと何が違うんだ?と頭悩ませております。
こんな状況ですが、本題のデータベースのアプリ開発はまだまだ座敷が高いのでしょうか?

C#のデータベースのアプリ開発でADO.NETもしくはLINQどちらに進むべきなのか?
amazonで検索するとADO.NETの書籍は古い物が多くまた、言語がVisualBASICが多くありC#ではADOは不向きなのでしょうか?
次に進む進みたいのですが、いい書籍が見つかりません。
お勧め書籍やまだ早いから次はこういう勉強した方がいい等ご教授頂ければ幸いです。
どう勉強を進めて行くのがいいのかわからなくなっております。


<開発環境>
windows10
visual studio 2017 Communty
SQL Sever 2016 Express

<開発内容>
SQL Severにコネクトしデータの抽出や分析を行い。出力先はGUI(windows フォームアプリケーション)を考えております。





[ □ Tree ] 返信 編集キー/

▲[ 85672 ] / ▼[ 85678 ]
■85675 / 1階層)  Re[1]: 【初心者】C#でデータベースのアプリ開発について
□投稿者/ WebSurfer (1343回)-(2017/11/14(Tue) 10:25:32)
No85672 (shinshin さん) に返信

> 一つのブロックで処理するのとブロックをわけて処理するのと何が違うんだ?と頭悩ませております。

接続型データアクセス or 非接続型データアクセスどちらのアプローチを取るべきかという
話ですか?

注:接続型 / 非接続型の意味が分からなければ以下の記事を一読されることをお勧めします。

DB 設計者のための明解 ADO.NET 第 1 回
https://msdn.microsoft.com/ja-jp/library/cc482903.aspx

Windows Forms アプリですと、Visual Studio のデータソース構成ウィザードを利用して型付
DataSet + TableAdapter を作って(即ち非接続型データアクセスを使って)、それを利用して
アプリを作るのが簡単ですしチュートリアルも多いのでよさそうです。

質問者さんがターゲットとするのがどのような構造のアプリか分かりませんが、できれば一度
Visual Studio のウィザードを使って定番の構成のアプリを作ってみてはいかがでしょう?

とりあえず以下のチュートリアルを参考に作ってみて、ウィザードが自動生成するコードを見
れば今後の参考にもなると思います。

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

10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688

上のチュートリアルに従ってアプリを作ると、以下のページの図のような構造のアプリが、ほ
とんど自分でコードを書くこと無しに作れます。

Windows フォーム アプリケーションでのデータへの接続
https://msdn.microsoft.com/ja-jp/library/wxt2cwcc(v=vs.120).aspx

操作に慣れると 10 分もかからず作れるはずです。自力でコードを書くのに比べて開発工数
(間違などいにより後戻り工数も含めて)は激減するはずです。保守工数も減るはずです。
お試しください。

[ 親 85672 / □ Tree ] 返信 編集キー/

▲[ 85675 ] / ▼[ 85680 ]
■85678 / 2階層)  Re[2]: 【初心者】C#でデータベースのアプリ開発について
□投稿者/ shinshin (2回)-(2017/11/14(Tue) 11:13:46)
早速の返信ありがとうございます。

教えて頂いたサイト熟読させて頂きます。
これが理解できないと先に進む事は出来ませんよね。

>>一つのブロックで処理するのとブロックをわけて処理するのと何が違うんだ?と頭悩ませております。
>
> 接続型データアクセス or 非接続型データアクセスどちらのアプローチを取るべきかという
> 話ですか?

こちらに関してデータベースの話しではなくC#の理解度を示させて頂きました。
タイトルと関係ない事でした。



No85675 (WebSurfer さん) に返信
> ■No85672 (shinshin さん) に返信
>
>>一つのブロックで処理するのとブロックをわけて処理するのと何が違うんだ?と頭悩ませております。
>
> 接続型データアクセス or 非接続型データアクセスどちらのアプローチを取るべきかという
> 話ですか?
>
> 注:接続型 / 非接続型の意味が分からなければ以下の記事を一読されることをお勧めします。
>
> DB 設計者のための明解 ADO.NET 第 1 回
> https://msdn.microsoft.com/ja-jp/library/cc482903.aspx
>
> Windows Forms アプリですと、Visual Studio のデータソース構成ウィザードを利用して型付
> DataSet + TableAdapter を作って(即ち非接続型データアクセスを使って)、それを利用して
> アプリを作るのが簡単ですしチュートリアルも多いのでよさそうです。
>
> 質問者さんがターゲットとするのがどのような構造のアプリか分かりませんが、できれば一度
> Visual Studio のウィザードを使って定番の構成のアプリを作ってみてはいかがでしょう?
>
> とりあえず以下のチュートリアルを参考に作ってみて、ウィザードが自動生成するコードを見
> れば今後の参考にもなると思います。
>
> チュートリアル : データベースへのデータの保存 (単一テーブル)
> https://msdn.microsoft.com/ja-jp/library/0f92s97z(v=vs.120).aspx
>
> 10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
> https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688
>
> 上のチュートリアルに従ってアプリを作ると、以下のページの図のような構造のアプリが、ほ
> とんど自分でコードを書くこと無しに作れます。
>
> Windows フォーム アプリケーションでのデータへの接続
> https://msdn.microsoft.com/ja-jp/library/wxt2cwcc(v=vs.120).aspx
>
> 操作に慣れると 10 分もかからず作れるはずです。自力でコードを書くのに比べて開発工数
> (間違などいにより後戻り工数も含めて)は激減するはずです。保守工数も減るはずです。
> お試しください。
>
[ 親 85672 / □ Tree ] 返信 編集キー/

▲[ 85678 ] / ▼[ 85683 ]
■85680 / 3階層)  Re[3]: 【初心者】C#でデータベースのアプリ開発について
□投稿者/ WebSurfer (1346回)-(2017/11/14(Tue) 11:34:16)
No85678 (shinshin さん) に返信

> 教えて頂いたサイト熟読させて頂きます。
> これが理解できないと先に進む事は出来ませんよね。

熟読するのに時間をかけるより、興味を引いたところだけざっと眺めて、とり
あえず前者のチュートリアルに従って作ってみることをお勧めします。(後者
のチュートリアルはちょっと面倒なので、まずは簡単な前者から)

ただ、チュートリアルで使っているサンプルデータベース Northwind は、SQL
Server 2016 には古すぎてアタッチできないかもしれません。

その場合はサンプルデータベースをダウンロードした際一緒に含まれているス
クリプトを SSMS で走らせて DB を作ってください。その際、スクリプトに一部
修正は必要です。詳しくは以下の記事を見てください。

LocalDB で Northwind と Pubs を利用
http://surferonwww.info/BlogEngine/post/2017/05/16/use-northwind-and-pubs-on-localdb-2016.aspx

LocalDB に Northwind と Pubs を生成する記事ですが、相手が SQL Server 2016
でも同様に可能と思います。(未検証ですが)
[ 親 85672 / □ Tree ] 返信 編集キー/

▲[ 85680 ] / ▼[ 85691 ]
■85683 / 4階層)  Re[4]: 【初心者】C#でデータベースのアプリ開発について
□投稿者/ shinshin (3回)-(2017/11/14(Tue) 13:11:00)
ありがとうございます。
「習うより慣れろ」ですね。

教えて頂いたサイトのチュートリアルで練習させて頂きます。



No85680 (WebSurfer さん) に返信
> ■No85678 (shinshin さん) に返信
>
>>教えて頂いたサイト熟読させて頂きます。
>>これが理解できないと先に進む事は出来ませんよね。
>
> 熟読するのに時間をかけるより、興味を引いたところだけざっと眺めて、とり
> あえず前者のチュートリアルに従って作ってみることをお勧めします。(後者
> のチュートリアルはちょっと面倒なので、まずは簡単な前者から)
>
> ただ、チュートリアルで使っているサンプルデータベース Northwind は、SQL
> Server 2016 には古すぎてアタッチできないかもしれません。
>
> その場合はサンプルデータベースをダウンロードした際一緒に含まれているス
> クリプトを SSMS で走らせて DB を作ってください。その際、スクリプトに一部
> 修正は必要です。詳しくは以下の記事を見てください。
>
> LocalDB で Northwind と Pubs を利用
> http://surferonwww.info/BlogEngine/post/2017/05/16/use-northwind-and-pubs-on-localdb-2016.aspx
>
> LocalDB に Northwind と Pubs を生成する記事ですが、相手が SQL Server 2016
> でも同様に可能と思います。(未検証ですが)
[ 親 85672 / □ Tree ] 返信 編集キー/

▲[ 85683 ] / 返信無し
■85691 / 5階層)  Re[5]: 【初心者】C#でデータベースのアプリ開発について
□投稿者/ shinshin (5回)-(2017/11/14(Tue) 17:43:08)
OSが32bitだったためSSMS17がインストール出来ず
SSMS16をインストールしましたが今度は起動出来ませんでした。
原因を調べています。
前途多難ですが諦めずコツコツとスキルアップしいと思います。
トンチンカンな質問すると思いますがまたご教授お願い致します。

ありがとうございました。



No85683 (shinshin さん) に返信
> ありがとうございます。
> 「習うより慣れろ」ですね。
>
> 教えて頂いたサイトのチュートリアルで練習させて頂きます。
>
>
>
> ■No85680 (WebSurfer さん) に返信
>>■No85678 (shinshin さん) に返信
>>
> >>教えて頂いたサイト熟読させて頂きます。
> >>これが理解できないと先に進む事は出来ませんよね。
>>
>>熟読するのに時間をかけるより、興味を引いたところだけざっと眺めて、とり
>>あえず前者のチュートリアルに従って作ってみることをお勧めします。(後者
>>のチュートリアルはちょっと面倒なので、まずは簡単な前者から)
>>
>>ただ、チュートリアルで使っているサンプルデータベース Northwind は、SQL
>>Server 2016 には古すぎてアタッチできないかもしれません。
>>
>>その場合はサンプルデータベースをダウンロードした際一緒に含まれているス
>>クリプトを SSMS で走らせて DB を作ってください。その際、スクリプトに一部
>>修正は必要です。詳しくは以下の記事を見てください。
>>
>>LocalDB で Northwind と Pubs を利用
>>http://surferonwww.info/BlogEngine/post/2017/05/16/use-northwind-and-pubs-on-localdb-2016.aspx
>>
>>LocalDB に Northwind と Pubs を生成する記事ですが、相手が SQL Server 2016
>>でも同様に可能と思います。(未検証ですが)
解決済み
[ 親 85672 / □ Tree ] 返信 編集キー/

▲[ 85672 ] / ▼[ 85684 ]
■85681 / 1階層)  Re[1]: 【初心者】C#でデータベースのアプリ開発について
□投稿者/ 魔界の仮面弁士 (1459回)-(2017/11/14(Tue) 12:30:02)
No85672 (shinshin さん) に返信
> C#のデータベースのアプリ開発でADO.NETもしくはLINQどちらに進むべきなのか?
そもそも、LINQ 自体は データベース アクセスのための機能を持ち合わせていません。

いずれかしか学ぶ時間が取れないなら、データベースを扱うために
ADO.NET を優先して学ぶことになるでしょう。

初心者向けの ADO.NET のチュートリアルを数本実際に作ってみるだけでも、
概要は見えてくるかと思いますよ。


とはいえ、LINQ も有用なテクノロジーですので、
余裕ができたらこちらも学んでおくのがお奨めです。


というわけで、データベースと共に使われることの多い ADO.NET に対し、
LINQ の方は、データベース処理以外の場面でも多用されます。
有名どころとしてはこのあたり。

・LINQ to DataSet (ADO.NET 向け:DataView、DataSet、DataTable、DataRow)
・LINQ to Objects (配列、コレクション、任意のオブジェクト向け)
・LINQ to Entities (Entity Framework 経由でのデータベース向け:SQL Server、Oracle、MySQL、SQLite)
・LINQ to XML (XML、XAML 向け:WPF、UWP)
・PLINQ/Parallel LINQ (並列 LINQ)
・Rx/Reactive Extensions (オブザーバーパターンの LINQ 実装)



> amazonで検索するとADO.NETの書籍は古い物が多く
テクノロジー自体は特に進化していないため、改訂の必要が無かったからかもしれません。
それで無くとも、現在は新刊の出版数自体が激減していますし。


> C#ではADOは不向きなのでしょうか?
名前が似ていますが、「ADO」と「ADO.NET」はまったく別の技術です。

ADO.NET は、C# や VB(.NET 版の方)向けであり、使うならこちらです。
ADO は COM ベースの旧い技術であり、.NET との親和性は高くありません。

たとえば、Oracle 向けの ODP.NET なども ADO.NET 系ライブラリの一種です。
また ADO.NET とは使い方が幾分異なりますが、データベースの読み書きのために
「Entity Framework」というものもあります。(これも ADO.NET のテクノロジセットです)
そのほか、ADO.NET と組み合わせて使われる O/R マッパーとして、オープンソースの「Dapper」も有名です。
Dapper は O/R マッパーにしてはかなり高速ですし、C# との親和性も高いです。
(VB からでも Dapper は使えますが、C# と組み合わせた方が使いやすい)



> どう勉強を進めて行くのがいいのかわからなくなっております。
資料については WebSurfer さんがいろいろ紹介されていますので割愛。

掲示板で概要だけ聞いても分かるものではないので、ひとまず実際に試してみて、
その中で分からなかった部分をピンポイントで再質問した方が良いかと思います。



---- 以下余談に付き読み飛ばし推奨 ----

> C#を使いデータベースのアプリを開発したい思い。
> C#の入門書を購入しました。
前者の「C#」ではなく、
後者の「C#」が正しい表記法です。

日本工業規格 (JIS X 3015:2008) の 6 章において、
 ・C#は,“しーしゃーぷ”と発音する。
 ・C#は,LATIN CAPITAL LETTER C (U+0043)の次に NUMBER SIGN # (U+0023)を書く。
と定められており、その基となった ISO/IEC 23270 においても同様です。


> また、言語がVisualBASICが多くあり
VisualBASIC でも Visual BASIC でも無く
Visual Basic が正しい表記のようです。


BASIC 表記の例:
 N88-BASIC(1981〜) 日本電気
 N60-BASIC(1981〜) 新日本電気
 T-BASIC(1981〜) 東芝
 F-BASIC(1981〜) 富士通
 OA-BASIC(1982〜) 東芝
 Hu-BASIC(1982〜) ハドソン
 MSX-BASIC(1983〜) Microsoft
 True BASIC(1984〜) True BASIC
 dB-I BASIC(1984〜) dB-SOFT
 QuickBASIC(1988〜) Microsoft
 FreeBASIC(2004〜) オープンソース
Basic 表記の例:
 QBasic(1991〜) Microsoft
 Visual Basic(1991〜) Microsoft
 Small Basic(2008〜) Microsoft
basic 表記の例:
 REALbasic(1997〜) REAL Software
公式でも表記揺れあり:
 NS-HUBASIC/Ns-Hu BASIC/ファミリーベーシック(1984〜) 任天堂/シャープ/ハドソン
 SmileBasic/SmileBASIC/SMILEBASIC(2011〜) 任天堂

[ 親 85672 / □ Tree ] 返信 編集キー/

▲[ 85681 ] / 返信無し
■85684 / 2階層)  Re[2]: 【初心者】C#でデータベースのアプリ開発について
□投稿者/ shinshin (4回)-(2017/11/14(Tue) 13:18:05)
早速の返信ありがとうございます。

LINQを誤って理解していたようです。
ADO.NETをまずは勉強してみます。

LINQはSQLの構文を使わずを操作でき、databaseの種類に問わず、同じ構文で処理できるものだと思っていました。
いずれ勉強させて頂きます。


No85681 (魔界の仮面弁士 さん) に返信
> ■No85672 (shinshin さん) に返信
>>C#のデータベースのアプリ開発でADO.NETもしくはLINQどちらに進むべきなのか?
> そもそも、LINQ 自体は データベース アクセスのための機能を持ち合わせていません。
>
> いずれかしか学ぶ時間が取れないなら、データベースを扱うために
> ADO.NET を優先して学ぶことになるでしょう。
>
> 初心者向けの ADO.NET のチュートリアルを数本実際に作ってみるだけでも、
> 概要は見えてくるかと思いますよ。
>
>
> とはいえ、LINQ も有用なテクノロジーですので、
> 余裕ができたらこちらも学んでおくのがお奨めです。
>
>
> というわけで、データベースと共に使われることの多い ADO.NET に対し、
> LINQ の方は、データベース処理以外の場面でも多用されます。
> 有名どころとしてはこのあたり。
>
> ・LINQ to DataSet (ADO.NET 向け:DataView、DataSet、DataTable、DataRow)
> ・LINQ to Objects (配列、コレクション、任意のオブジェクト向け)
> ・LINQ to Entities (Entity Framework 経由でのデータベース向け:SQL Server、Oracle、MySQL、SQLite)
> ・LINQ to XML (XML、XAML 向け:WPF、UWP)
> ・PLINQ/Parallel LINQ (並列 LINQ)
> ・Rx/Reactive Extensions (オブザーバーパターンの LINQ 実装)
>
>
>
>>amazonで検索するとADO.NETの書籍は古い物が多く
> テクノロジー自体は特に進化していないため、改訂の必要が無かったからかもしれません。
> それで無くとも、現在は新刊の出版数自体が激減していますし。
>
>
>>C#ではADOは不向きなのでしょうか?
> 名前が似ていますが、「ADO」と「ADO.NET」はまったく別の技術です。
>
> ADO.NET は、C# や VB(.NET 版の方)向けであり、使うならこちらです。
> ADO は COM ベースの旧い技術であり、.NET との親和性は高くありません。
>
> たとえば、Oracle 向けの ODP.NET なども ADO.NET 系ライブラリの一種です。
> また ADO.NET とは使い方が幾分異なりますが、データベースの読み書きのために
> 「Entity Framework」というものもあります。(これも ADO.NET のテクノロジセットです)
> そのほか、ADO.NET と組み合わせて使われる O/R マッパーとして、オープンソースの「Dapper」も有名です。
> Dapper は O/R マッパーにしてはかなり高速ですし、C# との親和性も高いです。
> (VB からでも Dapper は使えますが、C# と組み合わせた方が使いやすい)
>
>
>
>>どう勉強を進めて行くのがいいのかわからなくなっております。
> 資料については WebSurfer さんがいろいろ紹介されていますので割愛。
>
> 掲示板で概要だけ聞いても分かるものではないので、ひとまず実際に試してみて、
> その中で分からなかった部分をピンポイントで再質問した方が良いかと思います。
>
>
>
> ---- 以下余談に付き読み飛ばし推奨 ----
>
>>C#を使いデータベースのアプリを開発したい思い。
>>C#の入門書を購入しました。
> 前者の「C#」ではなく、
> 後者の「C#」が正しい表記法です。
>
> 日本工業規格 (JIS X 3015:2008) の 6 章において、
>  ・C#は,“しーしゃーぷ”と発音する。
>  ・C#は,LATIN CAPITAL LETTER C (U+0043)の次に NUMBER SIGN # (U+0023)を書く。
> と定められており、その基となった ISO/IEC 23270 においても同様です。
>
>
>>また、言語がVisualBASICが多くあり
> VisualBASIC でも Visual BASIC でも無く
> Visual Basic が正しい表記のようです。
>
>
> BASIC 表記の例:
>  N88-BASIC(1981〜) 日本電気
>  N60-BASIC(1981〜) 新日本電気
>  T-BASIC(1981〜) 東芝
>  F-BASIC(1981〜) 富士通
>  OA-BASIC(1982〜) 東芝
>  Hu-BASIC(1982〜) ハドソン
>  MSX-BASIC(1983〜) Microsoft
>  True BASIC(1984〜) True BASIC
>  dB-I BASIC(1984〜) dB-SOFT
>  QuickBASIC(1988〜) Microsoft
>  FreeBASIC(2004〜) オープンソース
> Basic 表記の例:
>  QBasic(1991〜) Microsoft
>  Visual Basic(1991〜) Microsoft
>  Small Basic(2008〜) Microsoft
> basic 表記の例:
>  REALbasic(1997〜) REAL Software
> 公式でも表記揺れあり:
>  NS-HUBASIC/Ns-Hu BASIC/ファミリーベーシック(1984〜) 任天堂/シャープ/ハドソン
>  SmileBasic/SmileBASIC/SMILEBASIC(2011〜) 任天堂
>
[ 親 85672 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -