解説

実例で学ぶASP.NETプログラミング

第4回 DB連携ページをASP.NETで構築する(前編)

小田原 貴樹(うりゅう)
2003/03/29
Page1 Page2 Page3 Page4

 これは筆者の考え方なので必ずしもこの通りにする必要はないが、筆者は何かしらの機能を作成する場合には、必ずメソッド化してコンポーネント・クラスの中にコーディングするようにしている。再利用性という観点で見れば、常に汎用化ができているわけではないのだが、コード・ビハインドの対象となるVBファイルには、状態遷移にまつわるコードだけを記述したいため、このようにしている。

 ということで、コンポーネント・クラス(CORE.VB)をコード・ビューで開いて、以下のコードを追加してほしい。

 1: '情報表示機能関連クラス
 2: Public Class INFOV
 3:     Inherits Core
 4:     Public DC As New DATACON()
 5:
 6:     '新着情報表示機能メソッド
 7:     Public Sub NEWIIN(ByVal NL As Label)
 8:         Dim NM As String
 9:         Dim ND As DateTime
10:         Dim NSET As New NISET()
11:         Dim NVIEW As New DataView()
12:         DC.FDNI(NSET)
13:         NVIEW.Table = NSET.Tables("新着情報")
14:         NM = NVIEW(NVIEW.Count - 1)("内容")
15:         ND = NVIEW(NVIEW.Count - 1)("日付")
16:         NL.Text = NM & "(" & ND.ToString("MM/dd") & ")"
17:     End Sub
18: End Class
コンポーネント・クラス(CORE.VB)に追加するコード

 4行目では前回の「データを取得・更新するメソッドの作成」の項で作成した、データベースから情報を取得・更新するためのクラスのインスタンスを、「DC」という名前で新しく生成している。これでこのクラスの中でもDATACONクラスのメソッドが利用できるようになる。

 新着情報表示機能メソッドは引数として、「NL」という名前でラベル・コントロールを受け取るようにしている。最終的にラベル・コントロールの中に新着情報を表示するのが目的なので、引数にしてしまうのが早いだろう。この辺は好みが出やすいかもしれないが、「動けばいい」と筆者は思うので気にしない(笑)。

 さて、10行目が問題だ。「データを取得・更新するメソッドの作成」の項で解説したように、DataSetオブジェクトを実際に利用するときにはベース・クラスを型として、新しいオブジェクトを作成する必要がある。ここではあくまで「NSET」が新着情報のデータを管理するために利用されるDataSetオブジェクトだ。

 12行目が、ここまでに準備したデータベース取得の成果だ。「DC」クラスのメソッド「FDNI」に「NSET」を引数として指定することで、「NSET」にデータを格納することができる。

 11行目と13行目では、DataViewオブジェクトを新しく「NVIEW」という名前で作成し、「NVIEW」の対象として、「NSET」内のテーブル[新着情報]を指定している。これで、13行目が実行された後からは「NVIEW」は「新着情報」の内容を持っていることになる。

 14行目では、文字列型の変数「NM」に[新着情報]内の1番新しいレコードから、列名「内容」の中身を格納している。DataViewオブジェクトでは、実際のデータを取り出すときには、

 オブジェクト名(0から始まるインデックス番号)("列名")

という書式を使うのが一般的なのだが、1番新しいレコードのインデックス番号を考えれば「レコード総数(−1)」ということに気がつくだろうか? レコード総数はDataViewオブジェクトのプロパティ「Count」で取得できるので、14行目のような書き方が可能になっている。ちなみに「先頭レコードのインデックス番号」はもちろん常に「0」だ。

 15行目も同様で、その結果を16行目で引数のラベル・コントロールのTextプロパティに格納している。16行目には「ND.ToString("MM/dd")」という記述があるが、これは日付型変数に対する書式の割り当てをToStringメソッドを利用することで実現している。この場合は「月/日」という書式になる。.NETでは日付に関する書式パターンも豊富に用意されていて便利になった。そのほかの書式などさまざまなパターンについてはMSDNを参考にすれば見つかるだろう。

 さて、これで新着情報を表示する機能をメソッド化することができたので、実際に表示するコードを記述しよう。メイン・フレーム・ページのコード・ビハインド・ファイル「MAIN.ASPX.VB」を開いて、以下のコードを足してほしい。

宣言部分末尾に追加
  Public INFO As New INFOV()

Page_Loadメソッド内に追加
  INFO.NEWIIN(NPL1)

 ここまで読まれた方なら説明は不要だろう。この2行を追加するだけで、新着情報表示機能が実装できる。新着情報表示機能は一般的な機能で、ASPでもASP.NETでもそれほど違いがあるわけではないが、データを取得するプロセスが、ASP.NETでは理論的になったように感じる。


 INDEX
  実例で学ぶASP.NETプログラミング
  第4回 DB連携ページをASP.NETで構築する(前編)
    1.ASP.NETとWindowsフォームそれぞれの持つアドバンテージ
    2.メイン・フレーム・ページの構成要素とデザイン
  3.データベースと連携する「新着情報表示機能」の作成
    4.「サイト案内」のデザイン/参考になる.NETなソフト紹介
 
インデックス・ページヘ  「解説 :実例で学ぶASP.NETプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間