特集:VBでOracle Database開発入門(後編)SQL Server開発者のためのOracle DB入門初音 玲2008/12/09 |
|
|
■VB6×Oracleから.NET×Oracle 11g移行のポイント
まずはVB6時代のOracleデータベース開発について振り返ろう。
●VB6時代の接続手法(DAO/RDO/ADO/oo4o)
図5 VB6時代の接続手法 |
VB6時代の接続方法は、Visual Basicに標準搭載されているOracle Database向けのODBCドライバを介してDAD/JetやRDOで接続するか、あるいはOLE DBプロバイダを介してADOで接続するか、もしくはオラクル社が提供しているOracle Objects for OLE(oo4o)を使うかであった。この4つの接続用コンポーネントはすべてCOMコンポーネントであり、VB6から手軽に呼び出せた。
特にOracle Objects for OLEは、Oracle Database専用であったのでほかの接続方法に比べてパフォーマンスも良かった。また、DAOのプロパティやメソッドに近い構成になっており、VB6+DAO/Jet(Accessデータベース)という組み合わせからの移行もしやすかった。
それでは、対する.NET時代の接続方法を見てみよう。
●.NET時代の接続手法(ADO.NET/ODP.NET)
図6 .NET時代の接続手法 |
上の図のように、VB 2005/2008のプログラム・コードとのインターフェイスは.NETデータ・プロバイダの仕様に沿ったものであり、使用するクラス、イベントおよびプロパティなどがほぼ同じになっている。このため、いったん1つの.NETデータ・プロバイダの使い方を覚えてしまえば、さまざまな.NETデータ・プロバイダにその知識を応用できる。
●DataReaderクラスに移行するうえでのポイント
先ほど説明したDataReaderクラスは読み取り専用で、SELECT文により取得したレコードを1レコードずつ処理していくコード・スタイルになる。そのため、VB6時代の接続方法での処理形態と似通っているので、移行は比較的容易だろう。
以下は、VB6+Oracle Objects for OLEでデータベースからデータを読み取り、すべてのデータのENAMEフィールドの値を、ListBox1コントロールに追加していくコード。
|
|
VB6+Oracle Objects for OLEのコード例 | |
CreateDynasetメソッドの第2引数として記述している「12&」はオプション・フラグで、「読取り専用」(ORADYN_READONLY)+「前方参照専用」(ORADYN_NOCACHE)を意味する。 |
同じ内容をVB 2008+ODP.NETで書いたのが以下のコード。
|
|
VB 2008+ODP.NETのコード例 |
●データアダプタに移行するうえでのポイント
データアダプタに移行する場合のポイントは、プログラム・コードから値を取り出したり、値をデータベースに反映したりするのに、データセットを使う点だろう。
また、データアダプタを使ってデータベースの値をデータセットに設定した後は、データベースとの接続をいったん切断しておくのが通常で、そのためデータアダプタを使ったときの接続形態を「非接続型」と呼ぶ(データベースとの接続をキープしたままの接続形態は「接続型」と呼ばれる)。
以下はVB6+Oracle Objects for OLEのコード例。EMPテーブルを更新している。
|
|
VB6+Oracle Objects for OLEのコード例 | |
CreateDynasetメソッドの第2引数として記述している「0&」はオプション・フラグで、「デフォルトの動作」(ORADYN_DEFAULT)を意味する。 |
上記のコードと同じコード内容をVB2008+ODP.NETで記述した例。データアダプタ経由でEMPテーブルを更新している。
|
|
VB2008+ODP.NETのコード例 | |
「_da」はデータアダプタ(=OracleDataAdapterクラスのオブジェクト)。「Ds」はデータセット。 |
■まとめ
VB 2005/2008(.NET)からデータベースに接続する場合、VB6時代と共通しているのは、接続先データベースに対する専用ミドルウェア(本稿の例でいえばOracle Data Provider for .NET)を選択することが重要だということだ。専用ミドルウェアであれば、汎用的な.NETデータ・プロバイダに伴う汎用化のためのオーバーヘッドを回避できるし、また接続対象が限定されるため、データベース固有の機能が使いやすいように工夫されている。
しかも.NETデータ・プロバイダは、専用ミドルウェアをデータベース接続先ごとに切り替えて利用するという開発スタイルを考慮した構成になっているため、以前より少ない労力でOracle DatabaseへもSQL Serverへも簡単に切り替えて使える。.NETデータ・プロバイダを習得すれば、マルチなデータベース開発者になるのも夢ではないだろう。
INDEX | ||
[特集]VBでOracle Database開発入門(前編) | ||
.NETによるOracle Database開発とは? | ||
1..NETで、なぜデータベースが必要なのか? | ||
2.Oracle Databaseの歴史と最新のOracle 11gとは | ||
3.Oracleデータベース開発のテクノロジ | ||
[特集]VBでOracle Database開発入門(後編) | ||
SQL Server開発者のためのOracle DB入門 | ||
1.SQL Server開発者から見たOracle Databaseの特徴 | ||
2.Oracle DatabaseとSQL Serverのコードの主な違い | ||
3.VB6×Oracleから.NET×Oracle 11g移行のポイント | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -