サンプルアプリケーションは以下のサイトよりダウンロードできます。
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による同期の定義 |
|
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のアイコンから「パブリケーション・アイテムの作成」をクリックします。 |
|
|
 |
|
|
またはプロジェクト・ツリーから「パブリケーション・アイテム」を右クリックして「パブリケーション・アイテムの作成」を選択することでもできます。 |
|
|
 |
|
|
パブリケーション・アイテム・ウィザードが起動します。 |
|
|
 |
|
|
パブリケーション・アイテム名とタイプを指定します。ここでは以下のように設定し、「次へ」をクリックします。 |
|
|
 |
|
|
スキーマ・オブジェクトを選択します。ここでは以下のように指定します。 |
|
|
スキーマ名 |
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 |
|
最終的に、以下のように全ての表がパブリケーションアイテムとして登録されているのを確認してから、「順序」タブをクリックします。 |
|
|
 |
|
|
「順序」タブでは「追加」をクリックして、以下のシーケンスをパブリケーションに追加します。 |
|
|
名前 CLAIM_SEQ, COMPLIANT_SEQ , CERTIFICATE_SEQ |
|
|
 |
TR> |
|
「OK」をクリックすると、パブリケーションの登録とパブリケーションへの各オブジェクトの登録が完了しました。 |
|
|
 |
 |
| 同期のテストと結果の確認 |
|
|
定義した内容で正しく同期が行えるか、テストします。MDWがインストールされたマシン(ローカル)でもMobileクライアントがインストールされた別マシン(リモート)でもテストできます。今回はPocketPC(リモート)でテストします。 |
|
|
テストをおこなう前に、以下の要件が満たす必要があります。 |
|
|
- |
テスト用Mobileユーザーが作成済みであること |
|
|
- |
リモートでテストする場合、リモートマシンにMobileクライアントがインストール済みでDevice Agentが起動済みであること |
|
|
以下に、テストをおこなうための準備から実際のテスト方法について説明します。 |
|
|
1. テスト用モバイルユーザーの作成 |
|
ブラウザでMobileサーバーにアクセスします。 |
|
URL http://<server>/webtogo/ <server>はMobileサーバーのマシン名
ログイン画面で以下を入力し、「ログイン」をクリックします。
|
|
|
ユーザー名 |
Administrator |
|
|
パスワード |
<password> |
|
次の画面ではモバイル・マネージャをクリックしてモバイル・マネージャを起動します。 |
|
|
 |
|
|
モバイル・マネージャを起動すると、「ホスト名」の一覧が表示されますので、管理対象のホスト名をクリックします。 |
|
|
 |
|
|
モバイル・マネージャのメニューから、「ユーザー」をクリックします |
|
|
 |
|
|
「ユーザーの追加」をクリックします。 |
|
|
 |
|
|
以下のように入力してテスト用Mobileユーザーを作成します。 |
|
|
表示名 |
ELECGOVN |
|
|
ユーザー名 |
ELECGOVN |
|
|
パスワード |
ORACLE |
|
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上で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();
|