意外と簡単!? .NETでOracle - .NET 開発 with ODP.NET -「PDA(Oracle Lite)編」

日本オラクル クロスインダストリー統括本部
OracleDirect テクニカルサービスグループ
大田 浩


目次
   
はじめに
Oracle Liteとは
Oracle Liteのインストール
サンプルアプリケーションのインストール
Mobile Data Workbenchによる同期の定義
パッケージの作成と配布
アプリケーションの実行とデータの同期
アプリケーションの開発
VS.NETでの開発


 はじめに

 「意外と簡単!? .NETでOracle」シリーズは、Microsoft Visual Studio.NETを使用してOracle10g対応アプリケーションをこれから開発されるかた向けに作成しております。実際のサンプルアプリケーションを提供することにより、単なるコーディングTipsにとどまらず、より実践的なアプリケーション開発の資料として構成するようにしております。今回はモバイルソリューション(Oracle Lite)編ということで、Oracle Liteについてインストールからアプリケーションの開発まで実際のサンプルアプリケーションを動かしながら確認することができます。今回のサンプルアプリケーションの説明はポイントとなる部分のみの説明になりますので予めご了承ください。
 「意外と簡単!? .NETでOracle」シリーズが.NET開発者でオラクルを利用したい方のシステム構築の一助になれば幸いです。

  「意外と簡単!? .NETでOracle」シリーズは以下の4つの構成を予定しています。
  1. スマートクライアント編
  2. Web アプリケーション編「ASP.NET」
  3. OO4O(Oracle Objects for OLE)からODP.NET移行編
  4.       
  5. モバイルソリューション(Oracle Lite)編(本書)
  「意外と簡単!? .NETでOracle」シリーズの「モバイルソリューション編」は、以下の9つの内容から構成しております。
  1. Oracle Liteとは
  2. Oracle Liteのインストール
  3. Mobile Data Workbenchによる同期の定義
  4. パッケージの作成と配布
  5. アプリケーションの実行とデータの同期
  6. アプリケーションの開発
  「意外と簡単!? .NETでOracle」シリーズにおける開発環境

データベース・サーバー
OS:Microsoft Windows 2000 Professional + SP4
RDBMS:Oracle Database 10g Release 2 Standard Edition for Windows
モバイル・サーバー
OS:Microsoft Windows 2003 Enterprise Edition
開発クライアント
OS:Microsoft Windows 2000 Professional + SP
開発ツール:Microsoft Visual Studio .NET 2003
モバイル端末
OS:Pocket PC 200



 ODP.NETにするメリット

Oracle Database Lite 10g(以下、Oracle Lite) は、携帯情報端末(PDA)やノートパソコン などに最適化された軽量版の Oracle データベースを中心とした モバイル・ソリューションのための統合フレームワークです。Oracle Lite は、企業内の Oracle Database と モバイル・ デバイス間での完全かつ確実なデータ同期を実現します。また、既存の 業務システムとシームレスに連携するモバイル・アプリケーションの 素早い開発と容易な配置を支援するための機能が提供され、簡単かつ 優れたコスト効率でのモバイル・システムの構築を可能にします。

Oracle Liteはオフライン・アプリケーション(=ネットワーク接続なしで動作するDBアプリ)の開発・実行・配布・管理 を行うツール/ミドルウェア群です。                
- 軽量なモバイル・データベース・エンジン
- スケーラブルで強力なデータの同期
- 完全なライフサイクル管理
- 短期間でのアプリケーション開発
→ 単なる小型軽量DBエンジンではない
→単なるOracle Databaseの廉価版ではない

  「意外と簡単!? .NETでOracle」シリーズにおける開発環境

 Oracle Liteでは、以下のことが実現できます。
  1. 実行環境の配信
  2. ネットワークのない環境でデータを入力・参照
  3. データの同期
  4. 各種メンテナンス・監視作業

  以上のようにOracle Liteはネットワークから離れた場所で働くヒト、モノの生産性を向上させる唯一のソリューションになります。

  Oracle Liteの概要図

Oracle Liteの実行環境は以下の3つの端末とサーバーによって構成されます。
   
- Mobileクライアント
- Mobileサーバー
- Mobileサーバーレポジトリ(DBサーバー)

それぞれの役割は以下のようになります。


オフライン環境下での生産性向上のために、以下の要件を満たしています。
                       
- 利便性:アプリケーション+RDBMSの配信・利用
・現場で閉じた環境。業務を止めない。気軽に使える
・セキュリティ:DBセキュリティ機能
・入れたデータを確実に保護
・通信時も暗号化
・データ連携:強力な同期機能
・ユーザーで特別な操作不要、同期はサーバーDB任せ
・最新のデータ、アプリを取得できる


 Oracle Liteのインストール

 このセクションでは、Oracle Liteのセットアップをおこないます。今回は、MobileサーバーとしてWindows 2003を利用し、MoboleクライアントとしてPocket PC 2003を使用します。

  システム要件の確認

Mobileサーバー・レポジトリ対応のOracleデータベースと、Mobileサーバーの対応中間層構成は以下のようになります。
 Mobileサーバー・リポジトリの対応Oracleデータベース:
・Oracle Database 10g Enterprise Edition /Standard Edition /Standard Edition One
 ・ Release 1(10.1.0)
 ・ Release 2(10.2.0)
・Oracle9i Database Enterprise Edition/Standard Edition /Standard Edition One
 Release 2(9.2.0)

 Oracle Application Server 10g (9.0.4)
 ・ Release 1(9.0.4)
 ・ Release 2(10.1.2)

メモ:ASのEditionはJava Edition/Standard Edition/Enterprise Edition全て対応しています。Standaloneモードは開発用途推奨で機能制限があります。

 最新のハードウェア要件、ソフトウェア要件、Mobileクライアント要件に関しては、以下のページを確認してください。
 Oracle Database Lite 10g (10.2.0) システム要件表
http://www.oracle.co.jp/products/system/10g/lite/index.html#1020

 また、Oracle Lite関連の技術情報は、Oracle Technology Network(以下、OTN)よりダウンロード可能です。
http://otn.oracle.co.jp/document/products/lite10g/index.html

  モバイルサーバーのインストール
 Oracle Liteのソフトウェアをインストールする前のシステム要件の確認が終了したら、以下の手順に従ってOracle Liteをインストールします。はじめに、モバイルサーバーをインストールしてみましょう。
1. CD-ROMをPCにセットします
2. CD-ROMをPCにセットします
3. 「ファイルの場所」画面が表示されますので、この画面でインストール先を選択します。Oracleホームの名前とパスを入力してください。Oracleホームは既にあるOracleホーム、または新しいOracleホームでも構いません。
4. 「インストール・タイプ」画面で、インストールを実行するコンポーネントとインストールのタイプを選択します。今回は、「Mobile Server」を選択して「次へ」をクリックしてください。
5. インストールサマリー画面が表示されますので、インストールされるコンポーネントを確認後、問題がなければ「インストール」をクリックします。
6. Mobile Server Repository画面が表示されますので、Mobileサーバーのレポジトリ情報を格納するためのOracleデータベースの情報を入力し、「次へ」をクリックします。
7. インストールが終了すると、「インストールの終了」画面が表示されます。続いて「Mobile Development Kit」をインストールするので「次のインストール」をクリックしてください。
以上の作業で、Mobileサーバーのインストールが完了しました。次に、Mobile Development Kitのインストールをしてみましょう。

  Mobile Development Kitのインストール




 Mobile Development Kit には、次のコンポーネントが含まれています。


- Oracle Database Lite RDBMS
軽量のオブジェクト・リレーショナル・データベース管理システム
- パッケージ・ウィザード
アプリケーションをMobile サーバーにパブリッシュするツール
- Msql
ラップトップおよびハンドヘルド・コンピュータ上でのOracle Database Lite の作成、アクセスおよび操作を可能にするインタラクティブ・ツール
以上で 「Mobile Server」と「Mobile Development Kit」のインストールが完了しました。次に、「Mobile Data Workbench」を利用して同期の定義およびテストを実行してみましょう。
 サンプルアプリケーションのインストール

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

 http://otndnld.oracle.co.jp/easy/dotnet/Lite/sample.zip

 ダウンロードファイル(sample.zip)を任意の一時フォルダに保存し、解凍してください。解凍しますと「elecgovn」、「data」、「doc」という3つのフォルダが作成されます。それぞれのフォルダには以下の情報が格納されています。


- elecgovn
C#で作成されたサンプルアプリケーションが格納されています
- data
サンプルアプリケーションで使用するためのテーブル作成スクリプト(table.sql)が格納されています。
- doc
サンプルアプリケーションのオペレーションマニュアル(manual.doc)が格納されています。


 Mobile Data Workbenchによる同期の定義

Oracle Database Lite 10g Release 2からの新機能である「Mobile Data Workbench」(以下、MDW)を使用することにより、モバイル・データベース・スキーマ(スナップショット)の定義から、同期(テスト)/データベース・スキーマの検査(DB接続、SQL発行)までおこなうことができます。では実際に、MDWを使用しデータの定義とテストをおこなってみましょう

  MDW の起動と新規プロジェクトの作成
はじめに、MDWを起動し、新規プロジェクトを作成します。
1. MDWの起動
Windowsの「スタート」ボタンから「プログラム」「Oracle Database Lite 10g」「Mobile Database Workbench」の順番でアイコンをクリックするか、コマンドプロンプトからoramdwを呼び出すことでMDWを起動します。
C:\>oramdw

2. プロジェクトの新規作成
MDWの画面が起動しましたら、メニューから「ファイル(F)」−>「新規(R)−>「プロジェクト(P)」を選択します。


プロジェクト・ウィザードが表示されますので、「次へ」をクリックします。


プロジェクト名とプロジェクトの保存先ディレクトリを入力します。ここでは以下を入力し「次へ」をクリックします。
名前 ELECGOVN
格納場所 C:\ELECGOVN



Mobileサーバー・リポジトリへの接続情報を入力します。

ユーザー名 mobileadmin
パスワード <password>
JDBCドライバ・タイプ Thin
ホスト名 <hostname>
ポート <port>
SID <sid>



アプリケーション・スキーマのユーザー名、パスワードを入力します。

ユーザー名 elecgovn
パスワード oracle



サマリーが表示されますので中身を確認して「完了」をクリックします。



以上の作業で、新規プロジェクトが作成されます。

  アプリケーション・スキーマの作成

 今回のサンプルアプリケーションで使用する、アプリケーション・スキーマを以下の手順で作成します。
1.DBサーバー側でのスキーマの作成
アプリケーション・スキーマを作成する前に、DBサーバー側に同期対象のスキーマを作成します。

C:\>sqlplus system/<password>

SQL*Plus: Release 10.2.0.1.0 - Production on 金 11月 25 19:11:12 2005 Copyright (c) 1982, 2005, Oracle. All rights reserved.

Oracle Database 10g Standard Edition Release 10.2.0.1.0 - Production に接続されました。

SQL> CREATE USER elecgovn IDENTIFIED BY oracle; ユーザーが作成されました。

SQL> GRANT connect, resource TO elecgovn; 権限付与が成功しました。

2.SQL ウィンドウの起動
「ツール」メニューから「SQL ウィンドウ」を選択すると、SQL ウィンドウが 起動します。
SQL ウィンドウ・ウィザードが起動しますので「次へ」をクリックします。
データベース・タイプを選択します。今回はサーバーDB に接続するので「Oracle Database」を選択して「次へ」をクリックします。
データベースへの接続情報を入力し、「次へ」をクリックします。
サマリー画面が表示されるので確認して「完了」を押すとOracle Database へ接 続できます。
サマリー画面が表示されるので確認して「完了」を押すとOracle Database へ接 続できます。
3.マスター・データベース・オブジェクトの作成
SQL ウィンドウの画面です。上段がSQL の入力画面、中段が実行結果、および SQL 履歴の表示、下段がシステムメッセージの表示になります。
「スクリプトのロード」をクリックし、ロードするスクリプトを指定して「OK」 をクリックします。サンプルアプリケーション(sample.zip)を解凍したフォル ダに作成される「data」フォルダにある「table.sql」を選択してください。
今回のサンプルアプリケーションを実行するために必要なテーブルの作成スクリプトが読み込まれますので、「実行」ボタンをクリックしてスクリプトを実行します。

4. 順序の作成
テーブルの作成が完了したら、次に順序を作成します。MDW のアイコンから「順 序の作成」をクリックします。
またはプロジェクト・ツリーから「順序」を右クリックして「順序の作成」を 選択することでもできます。
「順序の作成」ウィンドウが立ち上がるので以下のように設定し、「OK」をク リックします。

名前 COMPLAINT_SEQ
開始 1
増分値 1
ウィンドウ・サイズ 100
しきい値 20
オフラインのみ チェック
同様に「CLAIM_SEQ」と「CERTIFICATE_SEQ」を作成します

  同期の定義

ここでは同期の定義を行います。同期の定義は以下の3ステップで構成されます。
1. 各データベース・オブジェクトに対する同期の設定
2. パブリケーション(同期オブジェクトのグループ)の定義
3. パブリケーションにパブリケーション・アイテムやシーケンスを追加
1. 各データベース・オブジェクトに対する同期の設定
MDWのアイコンから「パブリケーション・アイテムの作成」をクリックします。
またはプロジェクト・ツリーから「パブリケーション・アイテム」を右クリックして「パブリケーション・アイテムの作成」を選択することでもできます。
パブリケーション・アイテム・ウィザードが起動します。
パブリケーション・アイテム名とタイプを指定します。ここでは以下のように設定し、「次へ」をクリックします。
名前 CLAIM_PI
タイプ 高速
スキーマ・オブジェクトを選択します。ここでは以下のように指定します。

スキーマ名 ELECGOVN
オブジェクト・タイプ

ここでオブジェクト・フィルタにある「検索」ボタンを押すことで候補のオブジェクトがリストされます。ここでは「CLAIM」を選択して「次へ」をクリックします。
パブリケーション・アイテム定義として必要な列を選択します。ここでは全ての列を選択し、「次へ」をクリックします。
問合せ定義を行います。編集ボタンを押してSQLを直接編集することもできます。ここではそのまま「次へ」をクリックします。
サマリー画面が表示されます。定義内容を確認し、問題なければ「完了」をクリックします。
表「CLAIM」のパブリケーション・アイテム「CLAIM_PI」が定義されました。
上記と同様の作業をおこない、「CERTIFICATE」表と「COMPLAINT」表についてもパブリケーション・アイテムを作成します。

パブリケーション名 CERTIFICATE_PI
CERTIFICATE

パブリケーション名 COMPLAINT_PI
COMPLAINT

2. パブリケーション(同期オブジェクトのグループ)の定義
3. パブリケーションにパブリケーション・アイテムやシーケンスを追加 ここではパブリケーションの定義とパブリケーションに対するパブリケーション・アイテムやシーケンスの追加をまとめて実行しています。

MDWのアイコンから「パブリケーションの作成」をクリックします。
またはプロジェクト・ツリーから「パブリケーション」を右クリックして「パブリケーションの作成」を選択することでもできます
「パブリケーションの作成」ウィンドウで以下を設定します。

名前 ELECGOVN
クライアント・データベース名 ELECGOVN

「パブリケーション・アイテム関連の作成」でパブリケーションに登録するパブリケーション・アイテムを指定します。

名前 CLAIM_PI
更新可能 更新可能
競合解決 サーバー優先
重み 1

その他のパブリケーション・アイテムである、「CERTIFICATE_PI」と「COMPLIANT_PI」も同様に以下のような設定内容でパブリケーションアイテムとして追加します。

名前 更新可能競合解決 重み
CERTIFICATE _PI 更新可能サーバー優先 2
COMPLIANT _PI 更新可能サーバー優先 3

TR>
最終的に、以下のように全ての表がパブリケーションアイテムとして登録されているのを確認してから、「順序」タブをクリックします。
「順序」タブでは「追加」をクリックして、以下のシーケンスをパブリケーションに追加します。
名前  CLAIM_SEQ, COMPLIANT_SEQ , CERTIFICATE_SEQ
「OK」をクリックすると、パブリケーションの登録とパブリケーションへの各オブジェクトの登録が完了しました。

  同期のテストと結果の確認

 定義した内容で正しく同期が行えるか、テストします。MDWがインストールされたマシン(ローカル)でもMobileクライアントがインストールされた別マシン(リモート)でもテストできます。今回はPocketPC(リモート)でテストします。
 テストをおこなう前に、以下の要件が満たす必要があります。

- テスト用Mobileユーザーが作成済みであること
- リモートでテストする場合、リモートマシンにMobileクライアントがインストール済みでDevice Agentが起動済みであること

 以下に、テストをおこなうための準備から実際のテスト方法について説明します。
1. テスト用モバイルユーザーの作成
ブラウザでMobileサーバーにアクセスします。
URL http://<server>/webtogo/  <server>はMobileサーバーのマシン名 ログイン画面で以下を入力し、「ログイン」をクリックします。

ユーザー名 Administrator
パスワード <password>

次の画面ではモバイル・マネージャをクリックしてモバイル・マネージャを起動します。
モバイル・マネージャを起動すると、「ホスト名」の一覧が表示されますので、管理対象のホスト名をクリックします。
モバイル・マネージャのメニューから、「ユーザー」をクリックします
「ユーザーの追加」をクリックします。
以下のように入力してテスト用Mobileユーザーを作成します。

表示名 ELECGOVN
ユーザー名 ELECGOVN
パスワード ORACLE

他はそのままで「OK」をクリックします。

MDWTESTユーザーが追加されました。これでローカルでのテストが行えます。
2. PocketPCでのテスト
MDWの同期テストでの配布先としてPocketPCを使用するためには、事前にMobileクライアントがPocketPCにインストールされている必要があります。今回はMDKと同じマシン上にActiveSyncがインストールされている例で説明します。
ActiveSyncのメニュー「ツール」から「アプリケーションの追加と削除」を選択します。
「Oracle Lite」のうち、使用するPocketPCのOSおよびCPUの種類に合うものを選択し、「OK」をクリックすると、Mobileクライアントのインストールを行います。
Mobileクライアントのインストールが完了すると、「Oracle DM」「Oracle Msql」「Oracle Msync」「Oracle Update」の4つのアプリケーションがプログラムに登録されます。Oracle DMをクリックしてDevice Agentを起動し、モバイル・サーバーにDeviceの登録を行います。

ユーザー名 ELECGOVN
パスワード <password>
サーバーURL http://<server>/webtogo/devmgr
デバイス名 <変更なし>

デバイスが登録され、リモートテストのための準備が完了しました。
MDWの「プロジェクト」メニューから「テスト・パブリケーション」を選択して同期のテストを行います。
または作成済みのパブリケーションを右クリックして「テスト・パブリケーション」を選択することでも起動できます。
「作成」ボタンをクリックします。
以下の情報を入力し、「OK」をクリックします。

テスト名 TEST1(任意)
パブリケーション ELECGOVN
クライアント・タイプ リモート
ユーザー名 <デバイス名-CPU>

必要ならサブスクリプション・パラメータを設定します。今回はそのままで「同期」をクリックします。
「同期が成功しました」とメッセージが出れば同期完了です。
「了解」「閉じる」とクリックして、MDWのトップ画面に戻ります。



 パッケージの作成と配布

 パッケージ・ウィザードは、MDWの「プロジェクト」メニューから「パッケージ・アプリケーション」を選択します。
メニューの「ツール(T)」−>「パッケージ(P)」を選択して起動することも可能です。パッケージ・ウィザードを起動すると、以下の画面が表示されますので、「新規アプリケーション定義の作成(C)」を選択し、「OK」ボタンをクリックします。
「選択肢プラットフォーム」からパッケージ配布対象のプラットフォームを選択し、「次へ(N)」をクリックします。
「アプリケーション・ダイアログ」画面では、配布するアプリケーションの情報を設定します。以下の情報を入力し、「OK」をクリックします。

アプリケーション名 ELECGOVN
仮想パス /elecgovn
説明 Sample Application(任意)
パブリケーション名 elecgovn

「ファイル・パネル」ではパッケージとして配布する対象ファイルを選択します。
「データベース・パネル」では、モバイル・クライアントが接続するデータベース名を入力します。「elecgovn」を入力し「終了」ボタンをクリックします。
「アプリケーションの定義の完了」パネルで、現行のアプリケーションのパブリッシュを選択し、「OK」をクリックします。
「アプリケーションのパブリッシュ」パネルでは、配布先のモバイル・サーバーの指定とモバイル・サーバー・ユーザーを指定します。

モバイル・サーバーURL http://<server>/webtogo/devmgr
モバイル・サーバー・ユーザー名 Administrator
モバイル・サーバー・パスワード <password>
レポジトリのディレクトリ /elecgovn


  パッケージの配布

パッケージ・ウィザードで作成したパッケージを配布します。モバイル・サーバーを起動し、「アプリケーション」タグを選択します。先ほど登録した、「ELECGOVN」アプリケーションが一覧に表示されるので、「ELECGOVN」をクリックします。
ELECGOVNのアプリケーション・プロパティ画面で、「アクセス」タブをクリックします。
アプリケーションを配布するユーザーを選択します。ここでは、「ELECGOVN」ユーザーを選択し「保存」をクリックします。
次に、実際のPocket PC端末にアプリケーションを配布します。「モバイル・マネージャー」の「モバイル・デバイス」を選択して配布先のモバイル・デバイスを選択します。
モバイル・デバイスのプロパティ画面が表示されますので、「コマンド」をクリックします。
「コマンド送信」で「アプリケーションのインストール」を選択し、「すぐに送信」をクリックします。
配布対象のアプリケーション名を入力します。「elecgovn」と入力して「次へ」をクリックします。
モバイル・デバイスとの接続確認をおこない、「OK」をクリックします。
以上の作業で、モバイル・デバイスへ「ELECGOVN」アプリケーションがインストールされます。


 アプリケーションの実行とデータの同期

アプリケーションを実際に実行し、データを登録してみます。また、登録されたデータが同期処理で正常に同期できるかを試してみます。アプリケーションの操作方法については、サンプルアプリケーション(sample.zip)を解凍したフォルダに作成される「doc」フォルダにある「manual.doc」を参照してください。

  アプリケーションの実行

モバイル端末のプログラムメニューからElecgovnをタップして、今回のサンプルアプリケーションを起動できます。
今回は、苦情情報を登録してみます。メニュー画面から「3.苦情の登録」をタップします。
苦情情報の登録画面が表示されますので、各項目に任意の値を入力し「登録」ボタンをタップします。
データの登録の完了ダイアログが表示されますので、「OK」をタップします。登録する際に、参考番号は自動的に割り振られます。
「戻る」をタップしメインメニューに戻ります。苦情情報が正常に登録されたか確認するため、「4.ステータスレポート @」.苦情ステータス」をタップします。
苦情ステータス画面で検索対象データの条件を設定します。「全ての苦情」チェックボックスをチェックし、「レポート」をタップします。
苦情データの一覧が表示されます。先ほど登録した苦情データが一覧に表示されているのを確認後、「戻る」をタップしメインメニューに戻ってください。

 データの同期

メインメニューのステータスバーにある「同期」をタップすると、モバイル・サーバーと通信しデータがDBサーバーと同期されます。
DBサーバーにデータが正常に同期されたか確認してみます。DBサーバー上のSQL*PLUSを起動し、以下のSQLを実行してデータの中身を確認してみてください。

SELECT complid, custname FROM complaint;

 上記SQLを実行すると、先ほど登録した苦情情報がDBサーバー上にも同期されているのが確認できます。

C:\>sqlplus elecgovn/oracle

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
に接続されました。
SQL> SELECT complid, custname FROM complaint;

COMPLID CUSTNAME
---------- --------------------------------------------------
     1 111
     2 222
     3 333
     4 TEST CUSTOMER

次に、DBサーバー側で苦情テーブル(complaintテーブル)にデータを登録してみて、モバイル端末にデータが同期されるかテストしてみます。以下のSQLをDBサーバー側で実行してみてください。

SQL> INSERT INTO complaint(complid, custname) VALUES(999,'TEST INSERT');
1行が作成されました。
SQL> commit;
コミットが完了しました。

 再度モバイル端末上のアプリケーションを実行し、DBサーバー上のデータが同期されるか試してみます。モバイル端末上のサンプルアプリケーションを起動し、メインメニューから「同期」をタップしデータを同期します。

メインメニューのステータスバーにある「同期」をタップすると、モバイル・サーバーと通信しデータがDBサーバーと同期されます。
同期が完了したら、苦情ステータス画面で検索対象データの条件を設定します。「全ての苦情」チェックボックスをチェックし、「レポート」をタップします。
DBサーバー上で登録したテストデータがモバイル端末に同期されているのが確認できます。


 アプリケーションの開発
今回のサンプルアプリケーションはC#を使用して開発されています。Visual Studio .NET 2003(以下、VS.NET)を利用して実際のアプリケーションの開発方法について説明します。

 VS.NETでの開発準備

アプリケーションの構築自体はVS.NETに含まれるPocketPCのエミュレーターでおこなうことが可能です。VS.NETで新規にプロジェクトを作成する際に「スマートデバイス アプリケーション」を選択してください。
デバイスを選択する画面が表示されますので、任意のデバイスを選択してください。
以上の作業でPocketPCもしくはWinCE.NET上でアプリケーションを開発するためのプロジェクトファイルが作成されました。作成したアプリケーションを実行するとエミュレーターが自動的に起動し、エミュレーター上でアプリケーションが実行されます。

 エミュレーターへOracle Liteをインストール

Oracle Liteを使用したアプリケーションをVS.NET上で開発するには、エミュレーター上にOracle Liteをインストールする必要があります。以下の手順でOracle Liteをエミュレーターにインストールしてください。
1. エミュレーターの起動
スマートデバイスプロジェクトで作成したアプリケーションを実行するか、VS.NETの「デバイスへの接続」をクリックすると、エミュレーターが起動します。
2. Oracle Liteのインストール
エミュレーター上の「ファイル エクスプローラ」を起動し、「開くパス」の入力箇所に開発PCのコンピュータ名、もしくはIPアドレスを入力します。
開発PC上にOracle Liteのインストールモジュールをコピーしておき、そのフォルダを共有します。共有フォルダはエミュレーター上から参照できるので、そのフォルダに格納されているインストールモジュールをエミュレーター上でコピーし、任意の場所に貼り付けます。
エミュレーター上にコピーしたインストールモジュールファイルをタップするとOracle Liteがインストールされます。インストール後に、エミュレーター上の「プログラム」一覧の中にOracle Liteのアイコンが確認できます。

メモ:エミュレーター上でのOracle Liteはサポート対象外になりますので、ご注意ください。

 VS.NETでの開発
VS.NET上でOracle Liteへアクセスするためのコーディングを、実際のサンプルアプリケーションをもとに説明します。

 参照設定の追加

Oracle Liteへ接続するための接続ドライバーをVS.NETの参照設定で追加します。VS.NETのメニューから「プロジェクト(P)」−>「参照の追加(R)」を選択します。
「参照の追加」画面から「参照(B)」をクリックします。
ファイル選択ダイアログから、「Oracle.DataAccess.Lite_wce.dll」を選択し「開く」をクリックします。
「参照の追加」画面の「選択されたコンポーネント(S)」に「Oracle.DataAccess.Lite_wce.dll」が追加されているのを確認後「OK」をクリックします。

 Oracle Liteへの接続

以下、Oracle Liteへの接続コードになります。

using System;
using System.Windows.Forms;
using Oracle.DataAccess.Lite;

namespace ElecGovn
{

 public class ElecGovn
 {
  public ElecGovn(){}

OracleConnection conn;

  // Oracle Liteへの接続
  public void Connect()
  {
   conn=new Oracle.DataAccess.Lite.OracleConnection();
   conn.ConnectionString = "DSN=elecgovn; uid=system;pwd=oracle";

  conn.Open();
  }

コードの先頭部分でLiteへの接続クラスの名前空間を宣言します。

using Oracle.DataAccess.Lite;

Oracle Liteへの接続コネクションは、OracleConnectionクラスを使用します。

OracleConnection conn;
   conn=new Oracle.DataAccess.Lite.OracleConnection();
   conn.ConnectionString = "DSN=elecgovn; uid=system;pwd=oracle";

conn.Open();

ConnectionクラスのConnectionStringには、データファイルが格納されているディレクトリ、ユーザーID、パスワードの3つのパラメータを指定します。接続文字列をしたら、Openメソッドを使用してOracle Liteとの接続を確立します。Liteとの接続を切断する場合は、Closeメソッドを使用します。

// Liteとの接続を切断
public void Disconnect()
{
 conn.Commit();
 conn.Close();
 conn=null;
}

ElecGovn.cs - public void Disconnect ()

 Liteへのデータアクセス

LiteへSQLを発行するには、OracleCommandクラスを利用します。

IDbCommand cmd=null;
ElecGovn eg=new ElecGovn();

try
{
 eg.Connect();
 OracleConnection conn=eg.GetConnection();
 cmd = (OracleCommand)conn.CreateCommand();

 cmd.CommandText = "select complaint_seq.NEXTVAL from dual";
 IDataReader res;
 res = cmd.ExecuteReader();

 〜 以下省略 〜


OracleConnectionクラスからCreateCommandメソッドを使用してOracleCommandクラスのインスタンスを生成します。発行するSQLはCommandTextプロパティに設定します。

cmd.CommandText = "select complaint_seq.NEXTVAL from dual";

発行したSQLの結果セットを取得するには2つの方法があります。接続型の場合はOracleDataReaderを使用し、非接続型の場合はOracleDataAdapterを使用します。

cmd.CommandText = "select complaint_seq.NEXTVAL from dual";
IDataReader res;

res = cmd.ExecuteReader();

Complaint.cs - private void btnRegister_Click

dba = new OracleDataAdapter();
dba.SelectCommand = (OracleCommand)qry;

ddset = new DataSet();
dba.Fill(dset);

StatusComplaint.cs - private void btnReport_Click

SQL発行時のパラメータの設定はParameterクラスを使用します。

//CLAIMテーブルにデータ行を追加するSQL文
cmd.CommandText = "INSERT INTO CLAIM(CLAIM_ID,CUSTNAME,POLICY_NUMBER," +
"ACCIDENT_DATE,DESCRIPTION,VEHICLE_STATUS) values (?,?,?,?,?,?)";

IDataParameter par;
//パラメータ1番目の設定
par = cmd.CreateParameter();
par.DbType = DbType.Int32;
par.Direction = ParameterDirection.Input;
par.Value = nextValue;
cmd.Parameters.Add(par);

StatusComplaint.cs - private void btnReport_Click

画像などを扱うBLOBフィールドへのアクセスも同様にParameterクラスを使用してアクセスできます。

//画像ファイルの設定
OracleBlob blob = new OracleBlob (conn);
OpenFileDialog browse=new OpenFileDialog();
browse.Filter="Image Gif (*.gif)|*.gif";
browse.ShowDialog();
String imageSrc=browse.FileName;

if((imageSrc==null)||(imageSrc.Length == 0))
{
imageSrc = "\\My Documents\\right1up.gif";
}

FileStream file = new FileStream(imageSrc,FileMode.Open);
byte[] buf = new byte[CHUNK];
long off = 0;
for(;;)

{
    int len = file.Read(buf, 0, CHUNK);
    if (len == 0)
       break;

    blob.SetBytes(off, buf, 0, len);
    off += len;
}
file.Close();

cmd.Parameters.Add (new OracleParameter ("Image", blob));
cmd.ExecuteNonQuery();

ClaimInsurance.cs - btnRegister_Click
画像などを扱うBLOBフィールドへのアクセスも同様にParameterクラスを使用してアクセスできます。
以上、Oracle Liteへ接続するためのコードを説明しましたが、更に詳細な情報はOTNに掲載されておりますので、そちらを参照してください。
Oracle Database Lite 10g ドキュメント - Oracle Database Lite 開発者ガイド 10g
http://otn.oracle.co.jp/document/products/lite10g/index.html