ASP.NETの利点を引き出すODP.NET活用法ODP.NETファーストステップ(2)(1/4 ページ)

Windowsプラットフォームにおけるアプリケーション開発は、.NETが主流となりつつある。本連載はVisual Basicから.NETへの移行を考えているOracleアプリケーション開発者に向けて、「Oracle Data Provider for .NET」を使うメリットや独自機能、新しいプログラミング・スタイルなどを解説する。(編集局)

» 2004年12月28日 00時00分 公開
[大田浩日本オラクル]

 今回はASP.NET上でOracle Data Provider for .NET(以下、ODP.NET)を利用する際のコーディングを説明します。また、ASP環境でOracle Objects for OLE(以下、OO4O)を利用して開発されたアプリケーションからの移行の際に役立つ開発手法の違いも解説します。

ASPからASP.NETへ移行するメリット

 Windows ServerでのWebアプリケーション開発フレームワークがASPからASP.NETに進化したことで、画面デザインと処理ロジックの完全な分離が実現されました。さらにHTMLコードとHTTP通信を抽象化したフレームワークと開発環境が提供されたことにより、Webアプリケーションでありながらクライアント/サーバ型アプリケーションに近いイベントドリブン・モデルによる開発が実現されました。表1にASPとASP.NETの開発手法の違いをまとめました。

ASP ASP.NET
方式 HTMLタグの中にスクリプトを埋め込む コンポーネントベースのWeb開発
特徴 デザインと処理の分離が不完全 デザインと処理の分離が可能
表1 ASPとASP.NETの開発手法の違い

 これ以外にも、ASP.NETではASPに比べてWebアプリケーションの開発スタイルが以下のように大きく変わりました。

  • WebコントロールによるHTMLの抽象化
  • ポストバック処理とコードビハインドによる対話型Webアプリケーションの開発
  • 入力チェック検証コントロールを使用したユーザーの入力値の検証処理
  • データバインド機能

 業務アプリケーションでは、データベースから取得したデータを画面に表示する機能が数多く実装されていると思います。このようなデータ表示処理の場合、ASPからOO4Oを利用したアプリケーションの開発では、表のデータを1行ずつループで取得し、HTMLのタグを利用して表示する必要がありました。しかし、ASP.NETではデータバインド機能を使用することで、同様の処理をより容易に開発することが可能です。

ASP.NETのデータバインド機能

 それでは、ASP.NETからODP.NETを利用し、表のデータを表示する手順を見ていきます。

1. Webフォームの設定

 ASP.NETのWebフォーム上に以下のコントロールを貼り付けます。

  • OracleConnection
  • OracleCommand
  • OracleDataAdapter
  • DataSet
  • DataGrid
ODP.NETのコントロールをツールボックスに追加する手順は、OTN(Oracle Technology Network)の「意外と簡単!?.NETでOracle」で詳細に説明していますので、そちらを参照してください。

図1 WebフォームにODP.NETのコントロールを貼り付けた画面(クリックすると拡大します) 図1 WebフォームにODP.NETのコントロールを貼り付けた画面(クリックすると拡大します)

2. コントロールのプロパティの値を設定

 Webフォーム上に貼り付けたコントロールに対してプロパティの値を以下のように設定します。コントロールの番号は、図1の番号に対応しています。

コントロール コントロール名 プロパティ 設定値
(1) OracleConnection OracleConnection1 ConnectionString UserId=scott; Password=tiger;Data Source=orcl
(2) OracleCommand OracleCommand1 Connection OracleConnection1を指定
(3) OracleDataAdapter OracleDataAdapter1 SelectCommand OracleCommand1を指定
(4) DataSet DataSet1 変更なし 変更なし
(5) DataGrid DataGrid1 変更なし 変更なし
表2 ODP.NETで提供されているオブジェクト一覧
orclの部分は各自のサービス名を指定してください)

3. Page_Loadイベントにコードを記述

 Page_Loadイベントに以下のコードを記述します。

Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

  OracleCommand1.CommandText = _
    "select * from emp order by empno"
  OracleDataAdapter1.Fill(DataSet1, "EmpList")
  DataGrid1.DataSource = DataSet1
  DataGrid1.DataMember = "EmpList"
  DataBind()

End Sub
リスト1 データバインドを使用してDataGridへemp表を表示させるサンプルコード(VB.NET)

private void Page_Load(object sender, System.EventArgs e)
{
  oracleCommand1.CommandText = 
    "select * from emp order by empno";
  oracleDataAdapter1.Fill(dataSet1, "EmpList");
  DataGrid1.DataSource = dataSet1;
  DataGrid1.DataMember = "EmpList";
  DataBind();
}
リスト2 データバインドを使用してDataGridへemp表を表示させるサンプルコード(C#)

 ASP.NETのデータバインド機能を使用することにより、DataBindメソッドを発行するだけで、DataGridコントロールが内部でループ処理をしてくれます。これにより、集合データ表示の開発生産性が大幅に向上します。ASPで同様の処理をさせるには数十行のコードを記述しなければいけませんが(図2)、ASP.NETでは必要なコントロールをWebフォームに貼り付け、プロパティを設定後に数行のコードを記述するだけで実現できます(図3)。

図2 ASP+OO4Oでの集合データの表示 図2 ASP+OO4Oでの集合データの表示
図3 ASP.NET+ODP.NETでの集合データの表示 図3 ASP.NET+ODP.NETでの集合データの表示

 ASPからASP.NETになり、Webフォームにコントロールを貼り付け、データベースからの結果と連携するようなアプリケーションの開発が可能となりました。(次ページへ続く)

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。