意外と簡単!? .net でoracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/dotnet...6. oracle...

47
意外と簡単!? .NET Oracle - .NET 開発 with ODP.NET - 「スマートクライアント編」 Creation Date: Aug. 3, 2004 Last Update: Oct 21, 2004 Version: 1.1

Upload: hoangkiet

Post on 10-Apr-2019

253 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

意外と簡単!? .NET で Oracle - .NET 開発 with ODP.NET -

「スマートクライアント編」

Creation Date: Aug. 3, 2004 Last Update: Oct 21, 2004 Version: 1.1

Page 2: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 2

はじめに 「意外と簡単!? .NET で Oracle」シリーズは、Microsoft Visual Studio.NET を使用して

Oracle10g 対応アプリケーションをこれから開発されるかた向けに作成しております。実際

のサンプルアプリケーションを提供することにより、単なるコーディング Tips にとどまら

ず、より実践的なアプリケーション開発の資料として構成するようにしております。 .NET からオラクルへの接続にはさまざまな方法が存在しますが、「意外と簡単!? .NET

で Oracle」シリーズではオラクル社が提供している.Oracle Data Provider for .NET を利用

しており、開発言語は Visual Basic.NET を使用しております。今回のサンプルアプリケー

ションの説明はポイントとなる部分のみの説明になりますので予めご了承ください。 「意外と簡単!? .NET で Oracle」シリーズが.NET 開発者でオラクルを利用したい方のシ

ステム構築の一助になれば幸いです。

「意外と簡単!? .NET で Oracle」シリーズは

以下の3つの構成を予定しています。

1. スマートクライアント編(本書)

2. Web アプリケーション編「ASP.NET」

3. OO4O(Oracle Objects for OLE)から ODP.NET 移行編

「意外と簡単!? .NET で Oracle」シリーズの

「スマートクライアント編」は、以下の 9 つ

の内容から構成しております。

1. スマートクライアントとは

2. Oracle Data Provider for .NET のインストール

3. サンプルアプリケーションのインストール

4. データベースへの接続 - コネクション

5. データの取得 - 接続型データアクセス

6. データの取得 - 非接続型データアクセス

7. BLOB データへのアクセス

8. XML データの取り扱い

9. トランザクション処理

Page 3: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 3

「意外と簡単!? .NET で Oracle」シリーズに

おける開発環境 ・ データベース・サーバー

OS:Microsoft Windows 2000 Professional + SP4

RDBMS:Oracle Database 10g Standard Edition for Windows

・ アプリケーション・サーバー

OS:Microsoft Windows 2003 Enterprise

AP サーバー:Microsoft Internet Information Services 6.0

・ 開発クライアント

OS:Microsoft Windows 2000 Professional + SP4

開発ツール:Microsoft Visual Studio .NET 2003

Page 4: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 4

スマートクライアントとは スマートクライアントとは、今までの C/S(クライアント/サーバ)システムのリッチク

ライアントとウェブアプリケーション(クライアントにウェブブラウザを使用するアプリ

ケーション)の運用管理の容易さの両方を兼ねそろえたクライアントアプリケーションに

なります。具体的には「XML Web サービス」を呼び出すリッチクライアントをスマート

クライアントと呼びます。以下に XML Web サービスについての概要と、スマートクライ

アントの利点を説明します。

メモ:リッチ・クライアントとは、従来の C/S システムの長所であるリッチな

「ユーザー・インターフェイスの表現力」、「操作性」、「機能」を備えたクライ

アントになります。

XML Web サービスとは

XML Web サービスを説明する前に、Web サービスについて説明したいと思いま

す。Web サービスとは、インターネットを通じてアプリケーションどうしを結

び付け、ソフトウェアの機能をインターネットを通じて利用できるようにした

ものです。XML Web サービスとは XML をベースにした Web サービスの利用を

前提にしております。

C/S システム、Web アプリケーション、スマー

トクライアントとの違い

以下に、スマートクライアントアプリケーション、C/S アプリケーション、Web

アプリケーションの動作環境の違いと特徴を説明します。

Page 5: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 5

- 特徴 - 種類 アプリケーションの配布 クライアントの特徴

スマートクライアント ノータッチデプロイメント

を使用することにより、不

要。

機能や GUI が充実したユー

ザーインターフェースを使

用したクライアント。(リッ

チ・クライアント)

Web アプリケーション HTML をクライアントブラ

ウザで表示するため、不要。

機能や GUI が貧弱なクライ

アント。(シン・クライアン

C/S アプリケーション 必要なアプリケーション・コ

ンポーネントのインストー

ルが必要。

機能や GUI が充実したユー

ザーインターフェースを使

用したクライアント。(リッ

チ・クライアント)

以上のようにスマートクライアントでは Web アプリケーション配布の容易性と、

C/S アプリケーションのリッチクライアントの両方を兼ねそろえたアプリケーシ

ョンの開発が可能です。

スマートクライアントの利点

スマートクライアントとは XML Web サービスを呼び出すクライアントになり

ます。スマートクライアントによるアプリケーション開発の利点は以下の点が挙

げられます。

Page 6: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 6

・ HTTP プロトコルを使用することにより、特殊なデータプロトコルを必要とせ

ず、HTTP プロトコルを使用可能なサーバー・クライアントは Web サービスへ

のアクセスが可能です。

・ XML Web サービスは、HTTP、 XML、SOAP(Simple Object Access Protocol)な

どの標準的な Web プロトコルとデータ形式を使用して通信を行うため、プラ

ットフォームや言語に依存しないサービスを提供できます。

・ Oracle へのデータアクセスを Web サービス側で行うことにより、クライアント

側に Oracle クライアント・ソフトウェアをインストールする必要がなく、アプ

リケーションの配布もノータッチデプロイメントを使用することにより容易

になり、アプリケーションの配布、運用/管理の手間が省かれます。

Page 7: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 7

Oracle Data Provider for .NET のインストール 今回のサンプルアプリケーションでは Oracle データベースへの接続ミドルウェアに

Oracle Data Provider for .NET(以下 ODP.NET)を使用しています。 ODP.NET は OTN Japan(Oracle Technology Network Japan)の以下の URL よりダウ

ンロード可能です。 http://otn.oracle.co.jp/software/tech/windows/odpnet/index.html

上記のページよりダウンロードを行ってください。ダウンロードファイルは

ODAC10g.exe になります。ダウンロード後は以下の手順でインストールを行ってください。 ODP.NET のインストール手順 1. ODAC10g.exe を任意の一時フォルダにダウンロードしてください。

メモ:"Tmp"という名前がついたフォルダにはダウンロードしないでください。

2. ODAC10g.exe を実行して、解凍してください。 3. 解凍したフォルダの下の Disk1 以下にある setup.exe を実行して、Oracle Universal

Installer (OUI)を起動してください。

Page 8: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 8

OUI が起動しましたら、「次へ」ボタンをクリックしてください。

4. ファイル場所の指定画面が表示されましたら、インストール先の ORACLE_HOMEとパスを指定してください。通常、標準のままで問題ありません。

5. 使用可能な製品コンポーネントが表示されます。ここでは、「Oracle Data Provider

for .NET 10.1.0.2.0」と「Oracle Services For Microsoft Transaction Server 10.1.0.2.0」を選択します。他に必要なコンポーネントが一緒に選択し、「次へ」を

クリックしてください。

Page 9: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 9

Oracle Services For Microsoft Transaction Server は今回のサンプルで使用しており

ます、XML Web サービス上でトランザクション制御を行う場合に必要となりま

す。

6. Oracle Services For Microsoft Transaction Server のポート番号の指定画面が表示

されますので、そのまま「次へ」をクリックしてください。

7. サマリー画面が表示されますので、「インストール」をクリックしてください。

8. インストール終了後に Configuration Assistant 画面が表示されますので「次へ」を

クリックして下さい。

Page 10: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 10

9. ネーミングメソッドの選択画面が表示されますので、「ローカルネーミング」を選

択し(デフォルトで選択済み)、「次へ」をクリックします。

10. ネットサービス名の構成-サービス名の画面が表示されますので、グローバルデー

タベース名を入力して、「次へ」をクリックしてください。

11. ネットサービス名の構成-プロトコルの選択画面が表示されますので、デフォルト

でチェックされている TCP を選択して、「次へ」をクリックしてください。

Page 11: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 11

12. ネットサービス名の構成-TCP/IP プロトコル画面が表示されますので、ホスト名に

Oracle データベースがインストールされているサーバーのホスト名、もしくは IP ア

ドレスを入力して、「次へ」をクリックしてください。ポートの指定はネットワー

クの環境に応じて設定してください。

13. ネットサービス名の構成-テスト画面が表示されましたら、テストを行うか選択後

に「次へ」をクリックしてください。

Page 12: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 12

14. 「テストを実行する」を選択しますと、ネットサービス名の構成-接続画面にテス

ト結果が表示されます。テストが失敗した場合は、サービス名やホスト名などの指

定が間違えてないか確認後にもう一度テストを行ってください。

15. テスト完了後(テストをしない場合は、ネットサービス名の構成-テスト画面で次

へをクリック後)ネットサービス名の構成-ネットサービス名画面が表示されます

ので、任意のネットサービス名を入力して次へをクリックしてください。

この画面で入力するネットサービス名を使用して、ODP.NET は ORACLE データ

ベースへ接続を行います。

16. 他のネットサービス名を構成する場合は、「はい」を選択してください。今回は「い

いえ」を選択して、次へをクリックした場合の説明を行います。

Page 13: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 13

17. ネットサービス名の構成が終了しました。と表示されますので、「次へ」をクリッ

クしてください。

18. ネットサービス名の構成が完了しました。と表示されましたら、「次へ」をクリッ

クしてください。

19. Oracle Net Configuration が完了しました。と表示されましたら、「終了」をクリ

ックしてください。

Page 14: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 14

20. Oracle Universal Installer の画面に戻りますと、「インストールの終了」画面が表

示されていますので、終了をクリックしてください。「終了しますか?」とダイア

ログが表示されますので、OK をクリックしてください。

以上で ODP.NET のインストールが完了です。 21. インストール終了後、一時フォルダ上の ODAC10g.exe および解凍したファイルを

削除してください。 上記の作業で ODP.NET がインストールされます。インストール後は ODP.NET を

Visual Studio.NET から使用するための設定が必要になります。 ODP.NET を Visual Studio.NET から使用するための手順。

1. 参照設定 Visual Studio.NET で新規にプロジェクトを作成し、ソリューション・エクス

プローラーより、「参照設定」を右クリックして「参照の追加」を選択してく

ださい。

Page 15: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 15

参照の追加画面で Oracle.DataAccess.dll を選択し選択ボタンを押しますと、選

択されたコンポーネントに Oracle.DataAccess.dll が表示されますので、「OK」

ボタンを押して下さい。

上記の設定をしますと、ソリューション・エクスプローラーに以下のように

Oracle.DataAccess が追加されます。

2. ODP.NET コントロールをツールボックスに追加

Page 16: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 16

ツールボックスウィンドウで右クリックをし、アイテムの追加と削除を選択し

ます。

ツールボックスのカスタマイズ画面で以下の4つのコンポーネントをチェック

し、OK ボタンを押してください。 OracleCommand OracleCommandBuilder OracleConnection OracleDataAdapter

メモ:名前空間が Oracle.DataAccess.Client のコンポーネントを選択してくださ

い。System.Data.OracleClient に同名のコンポーネント名が存在しますが、そち

らは Microsoft 社が提供している Oracle へ接続するための.NET プロバイダー

になります。

3. Visual Studio .NET と連動した ODP.NET ヘルプのインストール

ORACLE_HOME ディレクトリ下に ODP.NET ディレクトリが存在します。更

にその下位層のディレクトリに help¥ja というディレクトリがあります。その

ディレクトリ内にインストーラファイル DataProviderHelp.msi が存在します

Page 17: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 17

ので、必要に応じてダブルクリックして HELP ファイルをインストールして下

さい。

メ モ : Oracle_Home が C:¥oracle¥product¥10.1.0¥Db_1 の 場 合 は 、

C:¥oracle¥product¥10.1.0¥Db_1¥ODP.NET¥help¥ja デ ィ レ ク ト リ に

DataProviderHelp.msi が存在します。

Visual Studio .NET を起動し、メニューの「ヘルプ」->「ダイナミックヘル

プ」を選択。

最下部 「Visual Studio のヘルプのインストール」を選択。参照項目の「Visual

Studio .NET 連結ヘルプコレクション マネージャ」をクリック。

下部の「VSCC に含めることのできるコレクション」の“ODP.NET Help”に

チェックし、「VSCC の更新」をクリックしてください。

Page 18: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 18

Visual Studio .NET 再起動後にヘルプが参照可能になります。

Page 19: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 19

サンプルアプリケーションのインストール サンプルアプリケーションは以下のサイトよりダウンロードできます。

http://otn.oracle.co.jp/easy/dotnet/index.html ダウンロードファイル(sample.zip)を任意の一時フォルダに保存し、解凍してください。

解凍しますと 「data」、「StockManagement」、「WebServiceStockManagement」と

いう 3 つのディレクトリが作成されます。今回のサンプルアプリケーションでは以下のよ

うに データベース・サーバー、Web アプリケーション・サーバー、クライアントの3つの

構成になります。ダウンロードファイルを解凍後にそれぞれの端末で以下の作業を行って

ください。

メモ: 今回のサンプルを動作させるために Oracle Database 10g をインス

トールし、データベースを構築しておく必要があります。Oracle Database

10g のインストール、初期データベースの作成などについては、OTN Japan

上 の 「 意 外 と 簡 単 !? Oracle Database 10g 」 を ご 参 照 下 さ い 。

http://otn.oracle.co.jp/beginner/oracle10g/index.html

サンプルデータ・パッケージの作成

(データベース・サーバーでの設定) 今回のシステムで使用しているサンプルデータとパッケージを Oracle がインス

トールされたデータベース・サーバー上にて、以下の手順で作成します。

1. ディレクトリの設定

今回のサンプルアプリケーションでは商品マスタ上の商品イメージを画像

ファイルとして管理しております。サンプルデータ作成時にビットマップファ

Page 20: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 20

イルを取り込みます。そのためにビットマップファイルが保管されているディ

レクトリを読み込み可能に設定する必要があります。ダウンロードファイル

(sample.zip)を解凍すると作成される data ディレクトリを Oracle Database 10g が

インストールされているサーバー上の任意のディレクトリにコピーして以下の

コマンドを SQL*Plus 上で実行してください。

(data ディレクトリを c:¥temp¥data にコピーし、ユーザーscott に対してデ

ィレクトリを読み込み可能にする設定のサンプル)

sqlplus system/<password>(SQL*Plus に system ユーザーでログイン)

create directory imgdir as ‘c:¥temp¥data’;

grant read on directory imgdir to scott;

メモ: create directory により、実際にディレクトリが作成されるわけで

はなく、Oracle で管理するためのディレクトリオブジェクトを作成して

おります。

2. テーブルとサンプルデータのインストール

data ディレクトリの install.sql を SQL*Plus で実行しますと、テーブルとパッ

ケージが作成されます。以下のように install.sql を実行してください。

sqlplus scott/tiger (SQL*Plus にログイン)

@install.sql(テーブルとパッケージの作成スクリプト SQL の実行)

exit(SQL*Plus の終了)

メモ: 上記のサンプルでは SCOTT ユーザーでログインしていますが、

任意のユーザー名でログインしてください。また、1の作業で作成した

ディレクトリオブジェクトを削除したい場合は、SQL*Plus に system ユー

ザーでログインしなおし、drop directory imgdir; と入力してください。

Internet Information Services(IIS)の設定 (アプリケーション・サーバー上での設定)

ダ ウ ン ロ ー ド フ ァ イ ル ( sample.zip ) を 解 凍 後 に 作 成 さ れ る

WebServiceStockManagement というディレクトリを Web サーバー上の Internet

Information Services(IIS)の root ディレクトリ下にディレクトリごとコピーしてくだ

さい。コピー後は以下のようなディレクトリ構成になります。

Page 21: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 21

コピーが終わりましたら、「コントロール・パネル」の管理ツールより「イン

タ ー ネ ッ ト ・ サ ー ビ ス ・ マ ネ ー ジ ャ 」 を 起 動 し て く だ さ い 。

WebServiceStockManagement フォルダの設定を変更します。 Internet Infomation

Servies(IIS)の管理画面を開き、以下のように WebServiceStockManagement フォルダ

を右クリックしてください。

メニューのプロパティを選択しますと、以下のプロパティ設定の画面が表示

されます。

Page 22: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 22

上記の画面で「アプリケーションの設定項目」にある「作成」ボタンをクリ

ックするとアプリケーションの設定が行われます。作成されたら「OK」をクリ

ックしてプロパティ・ウィンドウを終了してください。

Visual Studio .NET でソリューションを開く

(開発クライアント上での設定) ダウンロードファイル(sample.zip)を解凍後に作成される StockManagement と

いうディレクトリを Visual Studio .NET 2003がインストールされた端末上の任意の

ディレクトリ下にディレクトリごとコピーしてください。コピー後に Visual

Studio .NET でソリューションファイルを開きます。任意のディレクトリにコピー

した StockManagement ディレクトリ下の StockManagement.sln ファイルをダブルク

リックでしますと、Visual Studio .NET が起動されます。ソリューション・エクス

プローラーには以下の 2 つのプロジェクトが開かれた状態になっております。

2つのプロジェクトはそれぞれ以下のような構成になっております。

StockManagement

クライアント側 WindowsForm アプリケーション。

WebServiceStockManagement

Web サービス側 XML Web サービスアプリケーション。

Page 23: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 23

メモ: データアクセス部分は WebServiceStockManagement プロジェクト

の ServiceStockManagement.asmx に記述されています。

上記の設定で必要なファイルがインストールされ、実行可能になります。今回

作成されるアプリケーションの実行ファイルは StockManagement ディレクトリ下

の bin ディレクトリに StockManagement.exe として作成されます。このファイルを

Internet Infomation Servies(IIS)上に公開することによって、アプリケーションをク

ライアントに配布することなく Internet Explorer などの WEB ブラウザから URL を

指定することにより、アプリケーションを実行することが可能です(ノータッチ

デプロイメント)。以下の手順でアプリケーションを Internet Infomation Servies(IIS)

上に公開します。

Web サーバー上の Internet Information Services(IIS)の root ディレクトリ下に

StockManagement というディレクトリを作成してください。作成後は以下のような

ディレクトリ構成になります。

StockManagement デ ィ レ ク ト リ を 作 成 後 、 そ の デ ィ レ ク ト リ に

StockManagement.exe ファイルをコピーしてください。コピー後「コントロール・

パネル」の管理ツールより「インターネット・サービス・マネージャ」を起動し

てください。StockManagement フォルダの設定を変更します。Internet Infomation

Servies(IIS)の管理画面を開き、以下のように StockManagement フォルダを右クリッ

クしてください。

Page 24: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 24

メニューのプロパティを選択しますと、以下のプロパティ設定の画面が表示

されます。

上記の画面で「アプリケーションの設定項目」にある「作成」ボタンをクリ

ックするとアプリケーションの設定が行われます。作成されたら「OK」をクリ

ックしてプロパティ・ウィンドウを終了してください。以上で WEB サーバー上

での設定は終わりです。クライアント端末より Internet Explorer を起動し、以下

のアドレスを入力してください。

http://<WEB サ ー バ ー の コ ン ピ ュ ー タ 名 、 も し く は IP ア ド レ ス

>/StockManagement/StockManagement.exe

Page 25: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 25

アドレスを入力しますと在庫管理システムが起動されます。

在庫管理システムの使用方法は以下のサイトより操作説明書をダウンロード

できますのでそちらをご覧下さい。

http://otn.oracle.co.jp/easy/dotnet/index.html

これから実際に ODP.NET を使用したアプリケーション開発の方法をサンプル・

アプリケーションのコードを参照しながら説明します。

Page 26: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 26

データベースへの接続 - コネクション Oracle データベースへ接続するためのステップは以下のようになります。接続以外の部

分に関しては、サンプルアプリケーションのコードの一部を参照しながら ODP.NET にお

ける開発の主要な部分について説明します 1. OracleConnection の定義 2. コネクション文字列の設定とデータベースへの接続

OracleConnection の定義 コネクション変数を定義する前に、Imports ステートメントで ODP.NET の名前

空間を定義します。そうすることにより、ODP.NET 変数の宣言部分の文字列を短

くすることが出来ます。

1. 名前空間の宣言

Imports ステートメントを使用し、ODP.NET の名前空間を追加します。

<ソース ServiceStockManager.asmx.vb - 宣言部>

Imports ステートメント宣言部に以下の 2 つのコードを追加します。

Imports Oracle.DataAccess.Client

Imports Oracle.DataAccess.Types

Page 27: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 27

2. コネクションオブジェクトの宣言

名前空間を定義してあるので、以下のコードでコネクションオブジェクトを

定義可能です。

<ソース ServiceStockManager.asmx.vb - 宣言部>

Private Cnn As New OracleConnection

名前空間を定義していない場合には、以下のようになります。

Private cnn As New Oracle.DataAccess.Client.OracleConnection

コネクション文字列の設定とデータベースへ

の接続

1. コネクション文字列の設定

ConnectionString に Oracle への接続の文字列を入力します。

<ソース ServiceStockManager.asmx.vb-DbConnect 関数, DBOpen 関数>

データベースに接続するユーザ名を“user id”に、パスワードを”password”に、

Oracle Data Provider for .NET のインストールで説明しました、ネットサービス

名を”data source”に設定します。

Cnn.ConnectionString = “user id=scott;password=tiger;data source=orcl”

2. データベースへの接続

実際のデータベースへの接続は、Open メソッドで行います。

<ソース ServiceStockManager.asmx.vb-DBOpen関数>

cnn.Open()

Page 28: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 28

ポイント: 後で説明します接続型ではコネクション文字列を設定後に

Open メソッドを使用する必要があります。非接続型ではデータ取得時に

自動的に Open , Close を行いますので、Open メソッドを使用する必要が

ありません。サンプルの DbOpen 関数は接続型を使用する場合に、

DbConnect 関数は非接続型使用時にそれぞれ呼び出しています。

データの取得 - 接続タイプ Oracle データベースへのデータアクセスの方法として接続型と非接続型の2つが存在し

ます。それぞれ ODP.NET で使用するオブジェクトが違います。

また、接続型/非接続型の特徴として以下の点が挙げられます。

接続タイプ 参照系SQLの実行 更新系SQLの実行 トランザクション

接続型 データ取り出し期間中、デー

タベースに常に接続。

データの更新が接続中に発

行できるので容易。

トランザクション制御は

容易。

非接続型 データ取得時のみデータ

ベースに接続。

一度データベースへの接続

が切断されるので複雑。

非接続中の更新なども考

慮に入れる必要があるた

め複雑。

データの取得 - 接続型データアクセス 接続型データアクセスとは、データベースに接続したままの状態でデータを読み書きす

る手法です。今回のサンプルアプリケーションような XML Web サービスでのデータアク

セスの場合は、Web サービス側で Oracle からデータを取得した後に、コネクションを切断

Page 29: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 29

してデータをクライアントに返すような流れになりますので(後述する非接続型データア

クセス)、接続型アクセスを使用している部分はログイン時の ID、パスワードチェックの

ロジック部分のみになります。ODP.NET での接続型データアクセスの方法は、以下の手順

になります。 1. OracleCommand オブジェクトを使用し、SQL の定義。 2. OracleDataReader オブジェクトを使用し、データの読み取り。

OracleCommand オブジェクトの使用 OracleCommand を使用し、実行する SQL を定義するには以下の手順が必要に

なります。

1. OracleCommand オブジェクトの宣言 - ServiceStockManager.asmx.vb-

宣言部

以下のように OracleCommand オブジェクトを宣言します。

<ソース ServiceStockManager.asmx.vb - 宣言部>

Private cmd as New OracleCommand

2. OracleCommand オ ブ ジ ェ ク ト で 使 用 す る Connection の 設 定 -

ServiceStockManager.asmx.vb-DbOpen()

OracleCommand オブジェクトで使用する Connection を以下のように設定し

ます。

<ソース ServiceStockManager.asmx.vb - DbOpen 関数, DbConnect 関数>

cmd.Connection = cnn

3. SQL の定義。

OracleCommand オブジェクトの CommandText プロパティで発行する SQL

を定義します。

<ソース ServiceStockManager.asmx.vb - doLogin 関数>

Page 30: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 30

上記の SQL ではバインド変数が使用されています。:が前についた個所が

バインド変数になります(:p_EmpCode)。

sSql = “Select password From emp where empcode=:p_EmpCode”

cmd.CommandText = sSql

バインド変数については次項目で説明します。

4. バインド変数の設定

バインド変数の設定は OracleParameter オブジェクトを使用します。

OracleParameter を使用したコードは以下のようになります。

<ソース ServiceStockManager.asmx.vb - doLogin 関数>

cmd.BindByName = True

Dim paraEmpcd As OracleParameter = _

cmd.Parameters.Add("p_EmpCode", sEmpCode)

パラメータの設定方法には以下の2つの種類があります。

位置パラメータ(デフォルト)

位置パラメータを使用する場合は、OracleParameter オブジェクトの追加

順を SQL で指定されたパラメータ順にする必要があります。SQL で指定

されたパラメータと OracleParameter で指定するパラメータ名が同一であ

Page 31: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 31

る必要はありません。

名前指定パラメータ

名前指定パラメータとは、上記のサンプルソースのように、

cmd.BindByName = True

と OracleCommand オブジェクトの BindByName プロパティを True に設

定します。名前指定パラメータの場合は OracleParameter オブジェクトの

追加順は引数順にする必要はありませんが、パラメータ名と

OracleParameter で指定するパラメータ名が同一である必要があります。

OracleDataReader オブジェクトの使用 OracleDataReaderはOracleCommandで定義したSQLの実行結果を取得します。

データの取得、読込の手順は以下のようになります。

1. OracleDataReader オブジェクトの宣言

以下のコードで OracleCommand で定義した SQL の実行結果を

OracleDataReader で取得しています。

<ソース ServiceStockManager.asmx.vb - doLogin 関数>

Dim rdr As OracleDataReader = cmd.ExecuteReader

2. 取得したデータの読込

以下のコードで OracleDataReader オブジェクトにてデータを読込、値を取

得しています。 Read メソッドを使用してレコード単位でデータを読み込ん

でいます。

<ソース ServiceStockManager.asmx.vb - doLogin 関数>

If rdr.Read Then

If rdr("password") = sPassword Then

bRet = True

Else

sMsg = "パスワードが違います。"

bRet = False

End If

Else

sMsg = "社員コードが登録されていません。"

bRet = False

End If

Page 32: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 32

ポイント: OracleDataReader は前方向スクロールのみです。Read メソッ

ドを使用することにより、次レコードに移動します。また、読み出し専

用で更新が出来ません。

3. OracleDataReader と OracleConnection のクローズ

処 理 が 終 了 し た 場 合 は 開 発 者 が 明 示 的 に OracleDataReader と

OracleConnection を以下のように Close()メソッドを使用し、クローズします。

rdr.Close()

cnn.Close()

ポイント: ODP.NET では複数の OracleDataReader を同時に開く事が出

来ます。この機能は複数のアクティブな結果セット-Multiple Active

Result Sets "MARS"という略語で呼ばれています。ADO.NET 1.0 と 1.1 で

は以下のように複数 DataReader を開くとエラーがスローされますが、

ODP.NET では可能となっております。

< Multiple Active Result Sets "MARS" サンプルコード>

(以下のコードはサンプルアプリケーションのソースにはありません。)

Page 33: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 33

データの取得 - 非接続型データアクセス 非接続型データアクセスでは、Oracle上のデータのスナップショットコピーをDataset

オブジェクトにコピーします。スナップショット取得時のみ Oracle へ接続し、取得後は

Oracle へのコネクションは自動的に閉じられます。取得後接続を閉じた後でも Datasetオブジェクトでデータを参照できます。 今回のサンプルシステムでは主に XML Web サービスからデータを取得し、結果を

Dataset オブジェクトにコピーしてクライアント側で結果を表示するような処理を行っ

ています。ODP.NET での非接続型データアクセスの方法は、以下の手順になります。 1. OracleCommand オブジェクトを使用し、SQL の定義。 2. OracleDataAdapter オブジェクトを使用し、Oracle からデータを取得し、DataSet

に格納します。

ポイント: DataSet オブジェクトは、1つ以上のデータソースからのデー

タのローカルコピーを保存するオブジェクトです。データソースのデー

タを更新する場合は、DataAdapter を使用してデータソースに再接続し、

更新を行います。

OracleDataAdapter オブジェクトの使用 OracleDataAdapter は OracleCommand で定義した SQL の実行結果を DataSet に

格納します。データの取得、読込の手順は以下のようになります。

Page 34: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 34

以 下 の コ ー ド で OracleCommand で 定 義 し た SQL の 実 行 結 果 を

OracleDataAdapter が Dataset オブジェクトに格納します。

<ソース ServiceStockManager.asmx.vb - GetEmployeeListメソッド>

上記のコードでは、非接続型固有のデータの取得方法について説明します。

1. OracleDataAdapter の宣言

OracleDataAdapter の宣言時に OracleCommand オブジェクトを引数として設定

します。

Dim da as New OracleDataAdapter(cmd)

2. DataSet オブジェクトへデータを格納

DataAdapter の Fill メソッドを使用し DataSet オブジェクトへデータを格納し

ます。以下のようなコードになります。

If dsList.Tables.Contains("EmployeeList") Then _

dsList.Tables("EmployeeList").Clear()

da.Fill(dsList, "EmployeeList")

Page 35: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 35

Fill メソッドの 2 番目の引数は、作成される DataTable オブジェクトの名前に

なります。DataSet オブジェクトは複数の DataTable オブジェクトを格納出来

るので、名前を使用することによりどのテーブルを参照するのか指定が出来

ます。上記のサンプルでは EmployeeList テーブルオブジェクトが dsList デー

タセット内に存在するかチェックしています。存在する場合は、そのテーブ

ルオブジェクトの中身をクリアしてから Fill メソッドでデータを代入してお

ります。既存のデータが存在する場合は Fill するとデータは上書きではなく

追加になるのでご注意ください。

BLOB データへのアクセス 今回のサンプルアプリケーションでは、商品マスタの一部の項目に BLOB 型を使用して

おり、商品の写真を格納しています。XML サービスでの BLOB データの受け渡しですが、

以下のようになります。

BLOB データの受信 BLOB フィールドからデータを取得し、PictureBox へ表示する手順を説明しま

す。

1. BLOB データを Dataset に格納

以下のコードのように、BLOB フィールドを DataSet に格納します。

<ソース ServiceStockManager.asmx.vb - GetProductData メソッド>

Page 36: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 36

商品マスタ(Product テーブル)の ProductImage フィールドが BLOB で定義され

ている画像フィールドになります。DataSet オブジェクトに格納するときには、

BLOB フィールドの場合でも特に意識する必要はありません。

2. DataSet オブジェクトに取得した BLOB 型データを PictureBox へ表示

以下のコードのようにDataSetオブジェクトへ格納されたBLOB型データを

PictureBox へ表示します。

<ソース fmProduct.vb- GetProductData メソッド>

Page 37: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 37

DataSet オブジェクトから画像情報を Byte 配列に格納し、さらに

MemoryStream へ保存します。Image.FromStream メソッドを使用し PictureBox

の Image オブジェクトに代入し、表示するために、以下のコーディングを行

っています。

Dim byteImage() As Byte = .Item("productimage")

Dim ms As New MemoryStream(byteImage)

PictureBoxProduct.Image = Image.FromStream(ms)

BLOB データの更新 クライアントの PictureBox の画像を XML WEB サービスを通して Oracle の

BLOB フィールドに格納する方法は以下のようになります。

1. PictureBox の画像を Byte 配列に格納

以下のコードのように、PictureBox の画像を Byte 配列に格納します。

<ソース fmProduct.vb- GetProductData メソッド>

Page 38: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 38

MemoryStream オブジェクトへ PictureBox の画像を格納し、最後に Byte 配列

に値を代入しています。

'// PictureBox の画像情報を Byte 配列に保存

Dim byteImage(0) As Byte

If Not PictureBoxProduct.Image Is Nothing Then

Dim ms As New MemoryStream

PictureBoxProduct.Image.Save(ms, ImageFormat.Jpeg)

ReDim byteImage(ms.Length)

ms.Position = 0

ms.Read(byteImage, 0, Convert.ToInt32(ms.Length))

End If

2. Byte 配列の情報を XML Web サービスへ送信。

XML Web サービスへ Byte 配列として値を渡します。

<ソース fmProduct.vb- GetProductData メソッド>

Page 39: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 39

Dim wSvc As New ws_sman.ServiceStockManagement

Try

wSvc.UpdateProductData(TextBoxProductCode.Text, _

TextBoxProductName.Text, _

CInt(TextBoxPrice.Text), _

CInt(TextBoxStockNum.Text), _

TextBoxUnit.Text, _

TextBoxRemarks.Text, _

TextBoxSupplierCode.Text, _

CInt(TextBoxPurchasePrice.Text), _

CInt(TextBoxOrderPoint.Text), _

byteImage)

3. Byte 配列から BLOB フィールドへの格納。

XML Web サービス側で受け取った画像情報(Byte 配列)は OracleParameter

オブジェクトを使用し、BLOB フィールドへ値を渡します。

<ソース ServiceStockManager.asmx.vb - UpdateProductData メソッド>

Page 40: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 40

Byte 配列(byteImage)で画像情報をパラメータで取得後、

prm(9) = cmd.Parameters.Add("productimage", byteImage)

とパラメータで BLOB フィールドである ProductImage フィールドへ Byte 配

列を渡しています。

Page 41: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 41

XML の扱い 今回のサンプルでは、受注明細データを XML 形式にて格納しています。XMLType フィー

ルドを使用し、DataSet オブジェクトの内容を XML に変換後に格納しております。実際の

XML フィールドへの更新は以下のようになります。

XMLType フィールドの更新 XMLType フィールドの更新は SQL 文に直接 XML を記述するか、もしくは

XMLType としてパラメータを渡して更新する方法があります。XML データは通

常長文になると思われるので、以下のサンプルコードではパラメータ渡しをし

ております。

<ソース ServiceStockManager.asmx.vb - UpdateOrderData メソッド>

DataSet は WriteXml メソッドにより内容をそのまま XML に変換できます。上

記のサンプルでは DataSet から XML に変換後、その値を XMLType フィールドへ

格納しております。

Page 42: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 42

Dim sw As New IO.StringWriter

XmlData.WriteXml(sw)

prm(4) = cmd.Parameters.Add("orderxml", OracleDbType.XmlType)

prm(4).Value = sw.ToString

XMLType フィールドからのデータ取得 XML Type フィールドからの DataSet オブジェクトへデータの取得は以下の

ソースコードのように特に特別なコーディングは要りません。

<ソース ServiceStockManager.asmx.vb - GetOrderData メソッド>

DataSetオブジェクトに取得したXMLデータは以下のようにDataSetオブジェ

クトに変換できます。

Dim sr As IO.StringReader = _

New IO.StringReader(dsData.Tables("OrderData").Rows(0).Item("OrderXml"))

dsOrderData.Clear()

dsOrderData.ReadXml(sr)

上記のサンプルコードでは DataSet オブジェクトの ReadXml を使用し、XML

データを DataSet オブジェクトに格納しております。

Page 43: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 43

XMLType フィールドの操作 XMLType フィールドの操作は、以下のようなコードになります。サンプル・

アプリケーションでは、発注データの挿入トリガで商品マスタの在庫数更新を

しております。

Page 44: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 44

トランザクション ODP.NET ではローカルトランザクション処理として OracleTransaction クラスを用意して

おります。今回のサンプルアプリケーションでは、Oracle への接続は XML Web サービスを

使用しているので、トランザクション制御も XML Web サービス上で行っています。以下の

手順で XML Web サービスでのトランザクション制御を実装します。

1. System.EnterpriseServices の参照設定。

2. WebMethod 属性の変更。

ポイント: XML Webサービス上で分散トランザクションを利用するために、Oracle

Services For Microsoft Transaction Server がインストールされている必要があります。

System.EnterpriseServices の参照設定 Web サービス側のプロジェクト(WebServiceStockManagement)上で参照の追

加を以下の手順で行います。

WebMethod 属性の変更 XML Web サービス メソッドの宣言部分にトランザクション制御の設定をし

ます。

<ソース ServiceStockManager.asmx.vb -DeleteCustomerData メソッド>

Page 45: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 45

WebMethod 属 性 の TransactionOption プ ロ パ テ ィ を

TransactionOption.RequiresNew に設定します。

<WebMethod(TransactionOption:=TransactionOption.RequiresNew)> _

TransactionOption プロパティには以下の種類があります。

項目 説明

Disabled XML Web サービス メソッドが、トランザクションのスコープ内で実行されないことを示します。

要求が処理されるときに、XML Web サービス メソッドがトランザクションなしで実行されます。

[WebMethod(TransactionOption= TransactionOption.Disabled)]

NotSupported XML Web サービス メソッドが、トランザクションのスコープ内で実行されないことを示します。

要求が処理されるときに、XML Web サービス メソッドがトランザクションなしで実行されます。

[WebMethod(TransactionOption= TransactionOption.NotSupported)]

Supported XML Web サービス メソッドが、トランザクションのスコープ内で実行されないことを示します。

要求が処理されるときに、XML Web サービスがトランザクションなしで作成されます。

[WebMethod(TransactionOption= TransactionOption.Supported)]

Required XML Web サービス メソッドに、トランザクションが必要であることを示します。XML Web サー

ビス メソッドは、トランザクションにルート オブジェクトとしてだけ参加できるため、XML Web サー

ビス メソッド用に新しいトランザクションが作成されます。

[WebMethod(TransactionOption= TransactionOption.Required)]

Page 46: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

スマートクライアント編

意外と簡単!? .NET で Oracle 「スマートクライアント編」 46

RequiresNew XML Web サービス メソッドに新しいトランザクションが必要であることを示します。要求が処

理されるときに、新しいトランザクション内で XML Web サービスが作成されます。

[WebMethod(TransactionOption= TransactionOption.RequiresNew)]

XML Web サービス メソッドから例外がスローされるか、XML Web サービス メ

ソッドによって例外がキャッチされない場合、トランザクションは自動的に中止

されます。例外が発生しない場合、このメソッドが SetAbort を明示的に呼び出さ

ない限り、トランザクションは自動的にコミットされます。

Page 47: 意外と簡単!? .NET でOracleotndnld.oracle.co.jp/easy/dotnet/smart_client/pdf/DotNet...6. Oracle Services For Microsoft Transaction Serverのポート番号の指定画面が表示

日本オラクル株式会社 Copyright © 2004 Oracle Corporation Japan. All Rights Reserved.

無断転載を禁ず この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されるこ

とがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、

本書の内容に関連したいかなる損害についても責任を負いかねます。 Oracle は米国 Oracle Corporation の登録商標です。文中に参照されている各製品名及び

サービス名は米国 Oracle Corporation の商標または登録商標です。その他の製品名及び

サービス名はそれぞれの所有者の商標または登録商標の可能性があります。