Updated 1998/02/01
By PCDN 福岡寿和
Oracleと接続するためのミドルウェアの候補としては
過去の開発では、Oracle GLUEを使っていた時期もありますが、WindowsもVisual Basicも32bitに移行し、コンポーネントの接続もAPIからOLEに移行した今となっては、Oracleとの接続もOracle GLUEからOralce Object for OLEに移行することが筋と言うものです。GLUEが継続しないことに対し、Oracleに文句を言うことの方が筋違いです。
なお、Oracle7 Server/Oracle 8 Enterprise EditionがUNIXだとしても、クライアントがWindowsの場合は、Oracle7 Workgroup ServerまたはOracle8の最新版を購入しておくと良いでしょう。クライアントに必要なSQL*NetやOracle Objects for OLE(こちらは、再配布はライセンスフリーですが)が入っているし、UNIXのOracle7/8にも使うことができるGUIベースの管理ツールも付いています(Oracle Enterprise Managerを使う機会は少ないでしょうが)。
そして、Oracle7 Workgroup Server/Oracle8をテスト環境用としてセットアップしておけば、UINIXマシンがない場合(エンドユーザーへ搬入後など)でもソフトの開発・維持・テストができます。
SQL*Netの設定は、Windows版のSQL*Netを購入すれば、SQL*Net Easy ConfigurationというソフトがCD-ROMがあるので、これを使って簡単に設定できます。UNIX版しか知らないOracleユーザーや昔からのユーザーの中には、.ora関係の定義ファイルを直接編集しなければと思うかもしれませんが、今は、SQL*Net Easy Configurationを使うのが正しい方法です。
SQL*Net Easy Configurationで、プロトコル、データベース別名、サーバ名(TCP/IPならば、HOST名)、インスタンス名(orclなど)を設定すれば、ソフトからは、データベース別名を指定するだけで、希望のOracleと接続できます。
Oracle Objects for OLEの正体は、インプロセスOLEサーバです。よって、ただ単にファイルをコピーしても使えません。しかし、OracleのCD-ROMからインストールすれば、自動的にレジストリへの登録されます。この登録さえ完了していれば、Visual BasicからOracle Objects for OLEを使うことは比較的簡単です。
Oracle Objects for OLEの開発を紹介した書籍は殆どありませんが、Oracle Objects for OLEの文法は実質DAOと同じですので、AccessやVBのヘルプを参照すればなんとかなります。
Oracle Object for OLEを使う場合の唯一のハードルがインプロセスOLEサーバとしてVisual Basicとどう接続するかもしれません。
しかし、これは
Set gobjSession = CreateObject("OracleInProcServer.XOraSession")
というのを呪文のように唱えるだけです。
ちなみに、Oracle Objects for OLEは、インプロセスOLEサーバであるのでVisual Basic以外にもExcelや一太郎からでも使えます。
Oracle Objects for OLEは、Access2.0時代のDAO1.xの使い方を元にしています。ですから、DAO1.xと比較すれば、Oracle Objects for OLEの敷居が思った以上に低いことが判ると思います。
| DAO 1.x | oo4o |
|---|---|
| Dim dbsLocal As Database | Dim objDb As Object |
| Dim dynLocal As Dynaset | Dim objDs As Object |
| − | Dim objSes As Object |
| − | Set objSes = CreateObject("OracleInProcServer.XOraSession") |
| Set dbsLocal=OpenDatabase("BIBLIO.MDB") | Set objDb=objSes.DbOpenDatabase("oracle.world","scott/tiger",0&) |
| Set dynLocal=dbsLocal.CreateDynaset("SELECT * FROM Publishers",dbReadOnly) | Set objDs=objDb.DbCreateDynaset("SELECT * FROM Publishers",ORADYN_READONLY) |
|
If dynLocal.Eof Then dynLocal.AddNew Else dynLocal.Edit End If dynLocal("Title")="はじめてのSQL" dynLocal.Update |
If objDs.Eof Then objDs.DbAddNew Else objDs.DbEdit End If objDs("Title")="はじめてのSQL" objDs.DbUpdate |
| dynLocal.AddNew | objDs.DbAddNew |
| dynLocal.Close | Set ObjDs=Nothing |
| dbsLocal.Close | Set ObjDb=Nothing |
Oracleユーザーの中には、Oracle7 Server for Netwareを使っている人もいると思います。または、ユーザー先の環境がNetwareなのでfor NTを使えないところもあるかもしれません。もちろん、サーバ側を同じプラットフォームにすることは重要ですが、クライアントからみれば、

ライセンスについては、Oracle Objects for OLEとVisual Basic 4.0/5.0については、開発環境数分のライセンスが必要です。Oracle7/8(のクライアントライセンス)とSQL*Netについては、実行環境数分のライセンスが必要です。
Oracleは、いろいろ書籍が出版されているので、情報収集の面で有利なRDBMSです。
参考までに、実際に私が購入した書籍の中から使用頻度の高いものをピックアップしてみました。
RDBMSの利用 | Oracle WorkGroup
Visual Basic 開発者の手引き | Visual Basic WorkGroup
int21 ホームページ | PCDN ホームページ