解説実例で学ぶASP.NETプログラミング 第3回 「実プロ流」ASP.NETデータベース操作術
小田原 貴樹(うりゅう) |
Back Issue
|
||||
|
Slammerがセキュリティ・ポリシーを測る?
今回はデータベースに関する話なので、やはりこの話題に触れずにはいられない。2003年1月25日前後から大きな被害を与えたSQL Slammerワームのことだ(SQL Slammerの詳細は別稿「Windows Insider:管理者のジレンマを突いて爆発的に繁殖したSQL Slammer」を参照)。Microsoft SQL Server 2000シリーズのセキュリティ・ホールを突いて感染・繁殖を行うこのワームは、データベース製品を対象にした比較的珍しいワームといえる。Visual Studio .NET(以下VS.NET)をインストールしている環境は感染対象となるので、該当する環境でお使いの読者はマイクロソフトのサイトを確認し、必ずサービスパックを当てていただきたい。もちろん、筆者も適用した。
さて、筆者の職場ではどうだったのかというと、被害は皆無だった。筆者は社内のインテグレーションやサーバ管理も行っているのだが、セキュリティ・ポリシーとして、
「常に最新のセキュリティ・フィックスやサービスパックは適用する」
を実践している。Slammer対策となるセキュリティ・フィックスは、昨年の7月には提供されていたということなので、被害は起こりようもなかった。騒ぎが大きくなった同日にはサービスパック3も適用した。1台1台の開発環境などについては、ファイア・ウォールとして利用しているMicrosoft Internet Security and Acceleration Server(な、長い)が有効だったと考えられる。
結局のところ、Slammerの被害を受けたユーザーというのは、この半年間のセキュリティ・フィックスやサービスパックを適用していなかったということになる。いろいろな理由があるのかもしれないが、ひとつ声を大にしていっておきたいのは、
「ウイルス対策ソフトは結果的には対症療法にすぎない(ことが多い)」
ということだ。もちろん対症療法としての医療処置や薬も重要なものなので、これらを否定しているのではない。しかし病気の原因となった生活習慣や環境そのものを改善しない限り、ただのイタチごっこになってしまうのは自明の理だと思う。マイクロソフトが提供する各種のHotfixやサービスパックは、この病気の原因を改善するものなので、基本的には常に最新のものを適用するのが無難だと思っている。
ADO.NETの根幹、データセットとはいかなるものか?
さて恒例の(?)前置きはこのくらいにして、ADO.NETの話に入っていこう。これまでにASPを開発言語として使っていた方なら、ADO(ActiveX Data Objects)は利用されていたことと思う。ADOでは、レコードセットを基盤にデータベース内の情報を取り扱っていた。レコードセットは、データベースから情報を取得する際にSQL文を発行し、戻ってくる結果は行単位で構成されていた。一方、ADO.NETではデータセット(DataSet)と呼ばれる手法で情報を取り扱う。
はっきりいっておこう、
「ADOとレコードセットのことは忘れた方がいい」。
ADOにおけるレコードセットとADO.NETのデータセットはまったく違うものといっても過言ではない。似て非なるものなどというレベルではなく、全然違う概念の上に成り立っているものだ。いっそ全部忘れ去ってしまった方が、混乱がなくていいのではないかというくらい違う。正直、筆者もASPとADOを開発環境として長年使っていたので、最初のうちは大混乱に陥ってしまった。現状でASP.NETを利用していても、ADO.NETのデータセットは利用していない方が意外に多く見受けられるのは、この辺の混乱のせいかもしれない。
しかし、ADO.NETのデータセットには、これまでADOで習得したことをすべて捨て、新規に覚え直すという手間を費やすだけの価値がある。素晴らしく便利な技術であり、概念だ。「非接続型〜」がどうのこうのというのは正規のドキュメントや、ほかの執筆者の方に任せるとして、今回ここでは、ADO.NETのデータセットを構成するそれぞれのオブジェクトについて「実際の利用」のために必要な方法と概念を解説しよう。
前回からの流れで考えれば、今回はトップ・ぺージのメイン・フレーム・ページの構築に関して解説しなければならないのだが、メイン・フレーム・ページにはデータベースを利用する要素がいくつか存在している。そこで今回はデータベースを利用するための各種設定と、そのついでに(笑)ASP.NET(ADO.NET)でのデータベース操作の概念を解説することにした。
今回は実際のデータベースを利用して開発を行うので、次のリンクからサンプルDBをダウンロードしていただきたい。実際のVS屋デモサイトはSQL Serverを利用しているが、連載では読者の方の利便性を考えて、Accessベースのデータベースで開発を行っていく。
本格的なショッピング・サイトを運用するのであれば、Accessベースのシステムでは力不足であり、SQL Serverなどの本格的なDBMS(データベース管理システム)の利用を考えた方がよいだろう。しかし、VS.NET上でADO.NET、特にデータセットを利用するシステム開発においては、バック・エンドのデータベースに何を使っているかというのはほとんど問題にならない。それによってコードや操作が大きく変わるということもないので、この連載ではAccessを利用する。
ロールオーバーに関するメソッドの項で作成した、コンポーネント・クラス(CORE.VB)をデザイン・ビューで開いていただきたい。概念の解説の前にデータベースを利用するための設定を一通り終わらせてしまおう。
■OleDbConnectionオブジェクトの作成
まず、OLEDBデータソースに接続するためのOleDbConnectionオブジェクトを作成する。文章で読むと難しそうだが、VS.NETでの実際の作業は簡単だ。以下を参照して作成してほしい。
OleDbConnectionオブジェクトの作成:手順1 |
サーバエクスプローラの[データ接続]上でマウスを右クリックし、ショートカット・メニューの中から[接続の追加]を選択する |
OleDbConnectionオブジェクトの作成:手順2 |
開かれた[データリンクプロパティ]ダイアログの中の[プロバイダ]タブの中から、Access用のプロバイダである「Microsoft Jet 4.0 OLE DB Provider」を選択し、[OK]ボタンを押す。 |
OleDbConnectionオブジェクトの作成:手順3 |
表示された[Accessデータベースの選択]ダイアログで、サンプルDBのファイル「vsdemo.mdb」を選択し、[開く]ボタンを押す。 |
OleDbConnectionオブジェクトの作成:手順4 |
[プロジェクト]メニューから[新しい項目の追加]を選択する。サンプルDBのファイルが選択されたら、ほかの情報はデフォルトのまま[OK]ボタンを押す。 |
OleDbConnectionオブジェクトの作成:手順5 |
[データ接続]の下にサンプルDBのための新しい接続()が追加されている。この接続をデザイナ上にドラッグ&ドロップする。 |
OleDbConnectionオブジェクトの作成:手順6 |
デザイナ上に[OleDbConnection1]という名前でOleDbConnectionオブジェクトが作成されるので、このオブジェクトのプロパティでオブジェクト名を「PronetCon」()とする。 |
INDEX | ||
実例で学ぶASP.NETプログラミング | ||
第3回 「実プロ流」ASP.NETデータベース操作術 | ||
1.データベースを利用するための設定(1) - OleDbConnectionオブジェクト | ||
2.データベースを利用するための設定(2) - OleDbDataAdapterオブジェクト | ||
3.データベースを利用するための設定(3) - DataSetオブジェクト | ||
4.データセットを構成する各種オブジェクト | ||
5.ADO.NETの根幹、データセットの概念 - まとめ | ||
「解説 :実例で学ぶASP.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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|