Microsoft Word - DotNet_SmartClient_Final.doc

Similar documents
Visual Basic Oracle Database 11 Release 1

Oracle Lite Tutorial

Oracle Lite Tutorial

untitled

Oracle Lite Tutorial

Microsoft Word - oo4o_extra.doc

Oracle Business Intelligence Standard Edition One のインストール

PowerPoint プレゼンテーション

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

mySQLの利用

Microsoft Word - dotnet_aspdotnet.doc

DBMSリポジトリへの移行マニュアル

1. アンケート集計サンプルについて ここでは Windows Azure と SQL Azure を使ってアンケートを実施し アンケート結果を Excel で集計するサンプルについて説明します アンケートは Windows Azure で運用し アンケート結果は SQL Azure に格納されます

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

Mozilla Thunderbird アカウント設定手順 株式会社アマダアイリンクサービス

SCC(IPsec_win10)_リモート設定手順書.doc

DigiCert SSL/TLS 証明書 Microsoft IIS 8.0/8.5 証明書コピー/サーバー移行手順書

MxLogonサーバサイドツールキット用UI

製品組み込み手順書 Oracle Tuxedo (Linux版)  

Master'sONEセキュアモバイル定額通信サービス(MF120)設定手順書(Ver1_2).doc

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

クライアント証明書導入マニュアル

intra-mart Accel Platform

WebReportCafe

Oracle Developer Days

TimeTracker FX Web Edition セットアップガイド目次 はじめに... 2 第 1 章 TimeTracker FX Web Edition の概要 TimeTracker FX Web Edition とは... 3 システム構成... 3

目次 1. はじめに 証明書ダウンロード方法 ブラウザの設定 アドオンの設定 証明書のダウンロード サインアップ サービスへのログイン

製品組み込み手順書 Oracle Tuxedo (Windows版)

アーカイブ機能インストールマニュアル

HeartCoreインストールマニュアル

ADempiere (3.5)

新OS使用時の留意事項

Microsoft Word JA_revH.doc

TimeTracker FX セットアップガイド 補足資料 2/14 0. はじめに 本資料は [TimeTracker FX セットアップガイド ] では説明していない Microsoft SQL Server 2005 ( 以下 SQL Server 2005) の設定や操作方法を補足するための

Microsoft Word - XOOPS インストールマニュアルv12.doc

ご存知ですか? データ転送

楽2ライブラリ クライアントサーバ V5.0 体験版 クライアントOS利用時におけるIIS設定手順書

本マニュアルに記載された内容は 将来予告なしに一部または全体を修正及び変更することがあります なお 本マニュアルにこのような不備がありましても 運用上の影響につきましては責任を負いかねますのでご了承ください 本マニュアルの一部 あるいは全部について 許諾を得ずに無断で転載することを禁じます ( 電子

目次 目次 準備いただくもの 準備 SQLServer2008 R2 ExpressEdition のインストール インストールの前に インストール 設定一覧 機

新規インストールガイド Microsoft Office Professional Plus 2016 本書は Download Station から Microsoft Office Professional Plus 2016( 以下 Office) をダウンロ ドし 新規インストールを行う手順

事前準備マニュアル

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

アーカイブ機能インストールマニュアル

セットアップマニュアル

VPN 接続の設定

SQL Server データベース接続設定 マニュアル

OTRS10 他社システムOTRS呼出利用手順書

Master'sONEセキュアモバイル定額通信サービス(MF120)設定手順書(Ver1_2).doc

01_08 インストールガイド

Cuoreテンプレート

Team Foundation Server 2018 を使用したバージョン管理 補足資料

PrintBarrierV3L50(V ) アップデート手順書 第 1.01 版 株式会社富士通アドバンストエンジニアリング 平成 25 年 3 月 7 日 1

VB実用Ⅲ⑩ フリーデータベースⅡ

Microsoft Word - インストールガイド_ 1307.doc

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

iStorage ソフトウェア VMware vCenter Plug-in インストールガイド

RICOH Device Manager Pro バックアップ/バージョンアップ作業手順書

改版履歴 版 発行年月日 改版内容 作成者 /02/08 初版 NEC ビッグローブ /02/ クライアント AP のバージョンアップを追加 NEC ビッグローブ /07/ 接続設定にメッシュストレージ ST/HA の場合を追加


産直くん 9 リピートくん 9 バックアップ リストア作業チェックリスト バックアップ リストア作業項目一覧 作業項目作業目安時間概要 00 バックアップ リストア作業を行う前に 産直くん 9 リピートくん 9 のバックアップ リストア作業を円滑に行うための確認事項をまとめています 1. バックアッ

Master'sONEセキュアモバイル定額通信サービス(MF120)設定手順書(Ver1_2).doc

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

無線LAN JRL-710/720シリーズ ファームウェアバージョンアップマニュアル 第2.1版

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

価格査定システム インストールガイド 目次 はじめに...1 インストール CD の内容...1 インストール手順概要...2 A 価格査定システムのインストール...4 B マニュアルの参照 インストール B-1 CD-ROM から参照 B-2 インストールして参照...

組合会計システム ( 基本システム ) インストールマニュアル 1 目次 第 1 章インストール手順 インストーラーの起動... 2 第 2 章ユーザ登録及びライセンスの申請 ユーザ登録 ライセンス番号発行 ライセンス番号

ご注意 このソフトウェアの著作権は 株式会社日積サーベイにあります このソフトウェアおよびマニュアルの一部または全部を無断で使用 複製することはできません このソフトウェアおよびマニュアルは 本製品の使用許諾契約書のもとでのみ使用することができます このソフトウェアの仕様およびマニュアル記載の内容は

Windows 7ファイル送信方法 SMB編

intra-mart ワークフローデザイナ

(1)IE6 の設定手順 (1)IE6 の設定手順 1) 信頼済みサイトの追加手順 1: ブラウザ (Internet Explorer) を起動します 手順 2: ツール / インターネットオプション / セキュリティ メニューを選択します 手順 3: セキュリティ タブの 信頼済みサイト を選択

PALNETSC0184_操作編(1-基本)

Microsoft Office Excel 2007 と Excel 2003 の比較

Sharing the Development Database

データベースアクセス

商標類 Microsoft は, 米国およびその他の国における米国 Microsoft Corp. の登録商標です Microsoft Office は, 米国 Microsoft Corp. の商品名称です Microsoft Excel は, 米国 Microsoft Corp. の商品名称です

インストール要領書

intra-mart e-Builder ver 5

スクールCOBOL2002

Microsoft SQL Server 2016 インストール手順書 (Standard) この文書は SQL Server 2016 のインストール手順について簡潔にまとめたもので Microsoft SQL Server 2016 Books Online に記述されている一部を抜粋した内容で

Pirates Buster Series Secure Viewer セットアップマニュアル (Web インストーラ)

1 検証概要 目的及びテスト方法 1.1 検証概要 Micro Focus Server Express 5.1 J の Enterprise Server が提供する J2EE Connector 機能は 多くの J2EE 準拠アプリケーションサーバーについて動作検証がなされています 本報告書は

Transcription:

意外と簡単!?.NET で Oracle -.NET 開発 with ODP.NET - Creation Date: Aug. 3, 2004 Last Update: Oct 21, 2004 Version: 1.1

はじめに 意外と簡単!?.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. トランザクション処理 意外と簡単!?.NET で Oracle 2

意外と簡単!?.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 意外と簡単!?.NET で Oracle 3

スマートクライアントとは スマートクライアントとは 今までの C/S( クライアント / サーバ ) システムのリッチクライアントとウェブアプリケーション ( クライアントにウェブブラウザを使用するアプリケーション ) の運用管理の容易さの両方を兼ねそろえたクライアントアプリケーションになります 具体的には XML Web サービス を呼び出すリッチクライアントをスマートクライアントと呼びます 以下に XML Web サービスについての概要と スマートクライアントの利点を説明します メモ : リッチ クライアントとは 従来の C/S システムの長所であるリッチな ユーザー インターフェイスの表現力 操作性 機能 を備えたクライアントになります XML Web サービスとは XML Web サービスを説明する前に Web サービスについて説明したいと思います Web サービスとは インターネットを通じてアプリケーションどうしを結び付け ソフトウェアの機能をインターネットを通じて利用できるようにしたものです XML Web サービスとは XML をベースにした Web サービスの利用を前提にしております C/S システム Web アプリケーション スマー トクライアントとの違い 以下に スマートクライアントアプリケーション C/S アプリケーション Web アプリケーションの動作環境の違いと特徴を説明します 意外と簡単!?.NET で Oracle 4

- 特徴 - 種類アプリケーションの配布クライアントの特徴 スマートクライアント Web アプリケーション C/S アプリケーション ノータッチデプロイメントを使用することにより 不要 HTML をクライアントブラウザで表示するため 不要 必要なアプリケーション コンポーネントのインストールが必要 機能や GUI が充実したユーザーインターフェースを使用したクライアント ( リッチ クライアント ) 機能や GUI が貧弱なクライアント ( シン クライアント機能や GUI が充実したユーザーインターフェースを使用したクライアント ( リッチ クライアント ) 以上のようにスマートクライアントでは Web アプリケーション配布の容易性と C/S アプリケーションのリッチクライアントの両方を兼ねそろえたアプリケーションの開発が可能です スマートクライアントの利点 スマートクライアントとは XML Web サービスを呼び出すクライアントになります スマートクライアントによるアプリケーション開発の利点は以下の点が挙げられます 意外と簡単!?.NET で Oracle 5

HTTP プロトコルを使用することにより 特殊なデータプロトコルを必要とせず HTTP プロトコルを使用可能なサーバー クライアントは Web サービスへのアクセスが可能です XML Web サービスは HTTP XML SOAP(Simple Object Access Protocol) などの標準的な Web プロトコルとデータ形式を使用して通信を行うため プラットフォームや言語に依存しないサービスを提供できます Oracle へのデータアクセスを Web サービス側で行うことにより クライアント側に Oracle クライアント ソフトウェアをインストールする必要がなく アプリケーションの配布もノータッチデプロイメントを使用することにより容易になり アプリケーションの配布 運用 / 管理の手間が省かれます 意外と簡単!?.NET で Oracle 6

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) を起動してください 意外と簡単!?.NET で Oracle 7

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 を選択します 他に必要なコンポーネントが一緒に選択し 次へ をクリックしてください 意外と簡単!?.NET で Oracle 8

Oracle Services For Microsoft Transaction Server は今回のサンプルで使用しており ます XML Web サービス上でトランザクション制御を行う場合に必要となります 6. Oracle Services For Microsoft Transaction Server のポート番号の指定画面が表示されますので そのまま 次へ をクリックしてください 7. サマリー画面が表示されますので インストール をクリックしてください 8. インストール終了後に Configuration Assistant 画面が表示されますので 次へ をクリックして下さい 意外と簡単!?.NET で Oracle 9

9. ネーミングメソッドの選択画面が表示されますので ローカルネーミング を選択し ( デフォルトで選択済み ) 次へ をクリックします 10. ネットサービス名の構成 -サービス名の画面が表示されますので グローバルデータベース名を入力して 次へ をクリックしてください 11. ネットサービス名の構成 -プロトコルの選択画面が表示されますので デフォルトでチェックされている TCP を選択して 次へ をクリックしてください 意外と簡単!?.NET で Oracle 10

12. ネットサービス名の構成 -TCP/IP プロトコル画面が表示されますので ホスト名に Oracle データベースがインストールされているサーバーのホスト名 もしくは IP アドレスを入力して 次へ をクリックしてください ポートの指定はネットワークの環境に応じて設定してください 13. ネットサービス名の構成 -テスト画面が表示されましたら テストを行うか選択後に 次へ をクリックしてください 意外と簡単!?.NET で Oracle 11

14. テストを実行する を選択しますと ネットサービス名の構成- 接続画面にテスト結果が表示されます テストが失敗した場合は サービス名やホスト名などの指定が間違えてないか確認後にもう一度テストを行ってください 15. テスト完了後 ( テストをしない場合は ネットサービス名の構成 -テスト画面で次へをクリック後 ) ネットサービス名の構成 -ネットサービス名画面が表示されますので 任意のネットサービス名を入力して次へをクリックしてください この画面で入力するネットサービス名を使用して ODP.NET は ORACLE データ ベースへ接続を行います 16. 他のネットサービス名を構成する場合は はい を選択してください 今回は いいえ を選択して 次へをクリックした場合の説明を行います 意外と簡単!?.NET で Oracle 12

17. ネットサービス名の構成が終了しました と表示されますので 次へ をクリックしてください 18. ネットサービス名の構成が完了しました と表示されましたら 次へ をクリックしてください 19. Oracle Net Configuration が完了しました と表示されましたら 終了 をクリックしてください 意外と簡単!?.NET で Oracle 13

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 で新規にプロジェクトを作成し ソリューション エクスプローラーより 参照設定 を右クリックして 参照の追加 を選択してください 意外と簡単!?.NET で Oracle 14

参照の追加画面で Oracle.DataAccess.dll を選択し選択ボタンを押しますと 選択されたコンポーネントに Oracle.DataAccess.dll が表示されますので OK ボタンを押して下さい 上記の設定をしますと ソリューション エクスプローラーに以下のように Oracle.DataAccess が追加されます 2. ODP.NET コントロールをツールボックスに追加 意外と簡単!?.NET で Oracle 15

ツールボックスウィンドウで右クリックをし アイテムの追加と削除を選択します ツールボックスのカスタマイズ画面で以下の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 が存在します 意外と簡単!?.NET で Oracle 16

ので 必要に応じてダブルクリックして 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 の更新 をクリックしてください 意外と簡単!?.NET で Oracle 17

Visual Studio.NET 再起動後にヘルプが参照可能になります 意外と簡単!?.NET で Oracle 18

サンプルアプリケーションのインストール サンプルアプリケーションは以下のサイトよりダウンロードできます 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. ディレクトリの設定今回のサンプルアプリケーションでは商品マスタ上の商品イメージを画像ファイルとして管理しております サンプルデータ作成時にビットマップファ 意外と簡単!?.NET で Oracle 19

イルを取り込みます そのためにビットマップファイルが保管されているディレクトリを読み込み可能に設定する必要があります ダウンロードファイル (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 ディレクトリ下にディレクトリごとコピーしてください コピー後は以下のようなディレクトリ構成になります 意外と簡単!?.NET で Oracle 20

コピーが終わりましたら コントロール パネル の管理ツールより インターネット サービス マネージャ を起動してください WebServiceStockManagement フォルダの設定を変更します Internet Infomation Servies(IIS) の管理画面を開き 以下のように WebServiceStockManagement フォルダを右クリックしてください メニューのプロパティを選択しますと 以下のプロパティ設定の画面が表示されます 意外と簡単!?.NET で Oracle 21

上記の画面で アプリケーションの設定項目 にある 作成 ボタンをクリックするとアプリケーションの設定が行われます 作成されたら 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 サービスアプリケーション 意外と簡単!?.NET で Oracle 22

メモ : データアクセス部分は 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 フォルダを右クリックしてください 意外と簡単!?.NET で Oracle 23

メニューのプロパティを選択しますと 以下のプロパティ設定の画面が表示されます 上記の画面で アプリケーションの設定項目 にある 作成 ボタンをクリックするとアプリケーションの設定が行われます 作成されたら OK をクリックしてプロパティ ウィンドウを終了してください 以上で WEB サーバー上での設定は終わりです クライアント端末より Internet Explorer を起動し 以下のアドレスを入力してください http://<web サーバーのコンピュータ名 もしくは IP アドレス >/StockManagement/StockManagement.exe 意外と簡単!?.NET で Oracle 24

アドレスを入力しますと在庫管理システムが起動されます 在庫管理システムの使用方法は以下のサイトより操作説明書をダウンロードできますのでそちらをご覧下さい http://otn.oracle.co.jp/easy/dotnet/index.html これから実際に ODP.NET を使用したアプリケーション開発の方法をサンプル アプリケーションのコードを参照しながら説明します 意外と簡単!?.NET で Oracle 25

データベースへの接続 - コネクション 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 意外と簡単!?.NET で Oracle 26

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() 意外と簡単!?.NET で Oracle 27

ポイント : 後で説明します接続型ではコネクション文字列を設定後に Open メソッドを使用する必要があります 非接続型ではデータ取得時に自動的に Open, Close を行いますので Open メソッドを使用する必要がありません サンプルの DbOpen 関数は接続型を使用する場合に DbConnect 関数は非接続型使用時にそれぞれ呼び出しています データの取得 - 接続タイプ Oracle データベースへのデータアクセスの方法として接続型と非接続型の2つが存在します それぞれ ODP.NET で使用するオブジェクトが違います また 接続型 / 非接続型の特徴として以下の点が挙げられます 接続タイプ 参照系 SQLの実行 更新系 SQLの実行 トランザクション 接続型 データ取り出し期間中 デー データの更新が接続中に発 トランザクション制御は タベースに常に接続 行できるので容易 容易 非接続型 データ取得時のみデータ 一度データベースへの接続 非接続中の更新なども考 ベースに接続 が切断されるので複雑 慮に入れる必要があるた め複雑 データの取得 - 接続型データアクセス 接続型データアクセスとは データベースに接続したままの状態でデータを読み書きする手法です 今回のサンプルアプリケーションような XML Web サービスでのデータアクセスの場合は Web サービス側で Oracle からデータを取得した後に コネクションを切断 意外と簡単!?.NET で Oracle 28

してデータをクライアントに返すような流れになりますので ( 後述する非接続型データアクセス ) 接続型アクセスを使用している部分はログイン時の 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 関数 > 意外と簡単!?.NET で Oracle 29

上記の 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 で指定するパラメータ名が同一であ 意外と簡単!?.NET で Oracle 30

る必要はありません 名前指定パラメータ名前指定パラメータとは 上記のサンプルソースのように 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 意外と簡単!?.NET で Oracle 31

ポイント : 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" サンプルコード > ( 以下のコードはサンプルアプリケーションのソースにはありません ) 意外と簡単!?.NET で Oracle 32

データの取得 - 非接続型データアクセス 非接続型データアクセスでは 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 に格納します データの取得 読込の手順は以下のようになります 意外と簡単!?.NET で Oracle 33

以下のコードで 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") 意外と簡単!?.NET で Oracle 34

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 メソッド > 意外と簡単!?.NET で Oracle 35

商品マスタ (Product テーブル ) の ProductImage フィールドが BLOB で定義されている画像フィールドになります DataSet オブジェクトに格納するときには BLOB フィールドの場合でも特に意識する必要はありません 2. DataSet オブジェクトに取得した BLOB 型データを PictureBox へ表示以下のコードのように DataSet オブジェクトへ格納された BLOB 型データを PictureBox へ表示します < ソース fmproduct.vb- GetProductData メソッド > 意外と簡単!?.NET で Oracle 36

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 メソッド > 意外と簡単!?.NET で Oracle 37

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 メソッド > 意外と簡単!?.NET で Oracle 38

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 メソッド > 意外と簡単!?.NET で Oracle 39

Byte 配列 (byteimage) で画像情報をパラメータで取得後 prm(9) = cmd.parameters.add("productimage", byteimage) とパラメータで BLOB フィールドである ProductImage フィールドへ Byte 配列を渡しています 意外と簡単!?.NET で Oracle 40

XML の扱い 今回のサンプルでは 受注明細データを XML 形式にて格納しています XMLType フィールドを使用し DataSet オブジェクトの内容を XML に変換後に格納しております 実際の XML フィールドへの更新は以下のようになります XMLType フィールドの更新 XMLType フィールドの更新は SQL 文に直接 XML を記述するか もしくは XMLType としてパラメータを渡して更新する方法があります XML データは通常長文になると思われるので 以下のサンプルコードではパラメータ渡しをしております < ソース ServiceStockManager.asmx.vb - UpdateOrderData メソッド > DataSet は WriteXml メソッドにより内容をそのまま XML に変換できます 上記のサンプルでは DataSet から XML に変換後 その値を XMLType フィールドへ格納しております 意外と簡単!?.NET で Oracle 41

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 オブジェクトに格納しております 意外と簡単!?.NET で Oracle 42

XMLType フィールドの操作 XMLType フィールドの操作は 以下のようなコードになります サンプル アプリケーションでは 発注データの挿入トリガで商品マスタの在庫数更新をしております 意外と簡単!?.NET で Oracle 43

トランザクション 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 メソッド > 意外と簡単!?.NET で Oracle 44

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)] 意外と簡単!?.NET で Oracle 45

RequiresNew XML Web サービスメソッドに新しいトランザクションが必要であることを示します 要求が処 理されるときに 新しいトランザクション内で XML Web サービスが作成されます [WebMethod(TransactionOption= TransactionOption.RequiresNew)] XML Web サービスメソッドから例外がスローされるか XML Web サービスメソッドによって例外がキャッチされない場合 トランザクションは自動的に中止されます 例外が発生しない場合 このメソッドが SetAbort を明示的に呼び出さない限り トランザクションは自動的にコミットされます 意外と簡単!?.NET で Oracle 46

日本オラクル株式会社 Copyright 2004 Oracle Corporation Japan. All Rights Reserved. 無断転載を禁ず この文書はあくまでも参考資料であり 掲載されている情報は予告なしに変更されることがあります 日本オラクル社は本書の内容に関していかなる保証もいたしません また 本書の内容に関連したいかなる損害についても責任を負いかねます Oracle は米国 Oracle Corporation の登録商標です 文中に参照されている各製品名及びサービス名は米国 Oracle Corporation の商標または登録商標です その他の製品名及びサービス名はそれぞれの所有者の商標または登録商標の可能性があります