• ベストアンサー

VBでオラクルを使用する場合

VBでオラクルを使用する場合、「Oracle InProc Server 4.0 Type Library」を参照可能にしていますが、このライブラリは必ず使用しなければならないのでしょうか? オラクルを使用するときにみなさんは上記ライブラリを使用していますか? また一般的に使用するライブラリがありましたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

VBからOracleに接続する方法はいくつかある。 1.Oracle Objects for OLE(oo4o)を使う。 2.ADO+Oracle OLEDB Providerを使う。 3.ADO+ODBC+Oracle ODBC Driverを使う。 君が言うそれは1番のoo4oというもので、Oracle純正の接続ツールだ。Oracle接続に対して最もチューニングされている(当然っちゃ当然)。 > このライブラリは必ず使用しなければならないのでしょうか? oo4oを使って開発しますよという時は当然使用しなければならないね。 一応それぞれの利点と欠点を挙げておこうか。 1.oo4o、利点:Oracleを最大限活用できる、欠点:Oracle以外には使えない 2.ADO+OLEDB、利点:VBとADOの相性が良い、欠点:Oracleのあまり多くの機能を使えない 3.ADO+ODBC、利点:最も汎用的、欠点:機能が最も貧弱でやや遅い 何か参考になれば。

その他の回答 (1)

  • SSBBGLUV
  • ベストアンサー率47% (11/23)
回答No.1

必ず使用しなければいけないものではありません。 ライブラリを使用することによって、コンパイラはコンパイル時にOraDynasetなどが何であるのかということを認識させることが出来ます(アーリーバインディング)。 使用しない場合はOraDynasetなどのオブジェクトがコード上で使用できなくなります。この場合、OraDynasetなどの代わりにObjectを指定することによって、コンパイルができるようになります。ただしコンパイル時点では そのオブジェクトが何を指すのかが不明で、実行時にこれを解決することになります(レイトバインディング)。 これだけ見ると使用した方が良いように思えますが、タイプライブラリにある「4.0」の文字が曲者で、オラクルのバージョンが変わるとこの数値も変わり、今まで動いていたプログラムが起動出来なくなってしまうことがあります。 ですので、 ・ターゲットが明確な場合は使用する ・ターゲットが不明確な場合は使用しない  (ただしサポートされていないメソッドを使用すると実行時エラーになります) が良いのではないかと思います。

関連するQ&A

  • VB .NETとOracleを使用したシステム構築

    お世話になります。 現在、VB5とOracle8.0.6で稼動しているシステムがあるのですが、このシステムをVB.NETを使用してWEB化したいと考えております。 質問なのですが、 VB5+Oracle8.0.6のシステムをVB.NETでWEB化する場合、 どういう環境が必要なのでしょうか? また、注意点などありましたら、是非教えてください。 言葉足らずだとは思いますが、何卒、よろしくお願いします。 環境 クライアント  Windows XP Pro SP1  IE6.0 WEBサーバ  Windows2000 Server  IIS 5.0 DBサーバ  Oracle 8.0.6

  • Oracle8iから9iへ移行後、接続できない

    環境:Oracle9i 2.0 VB :VB6 件名の通りです。Oracle9iクライアントにバージョンアップしました。 その後、既に作成されているプログラムを開いて実行しようとするとエラーになります。 原因はOracle InProc Server 4.0 Type Libralyが参照不可になっていました。 別のPCにはOracle9i管理者版をインストールしたのですが、こちらは問題なく動作します。 Oracle9i管理者とクライアントによってVB6の動作に違いがあるのでしょうか? ちなみにOracle9i管理者版でOracle InProc Server 4.0 Type Libralyを参照しているファイルはoip9.tlbでしたのでoip9.dllの2つのファイルをクライアント版のPCに登録したのですが、それでも動作しませんでした。 原因がわからず困っています。どなたかアドバイスお願い致します。

  • VB6とOracleについて

    VB6でプログラミングをしております。 今まで、データベースはAccessを使用しておりました。 サーバーにAccessのデータ(mdb)を入れておくと クライアントは全てこのサーバーのmdbを読み書き しております。 この度、Oracle Database 10g XE(無料)に以降する事になりました。 今までの感覚で行くと、サーバーにのみOracleをインストール すれば良いと考えております。が、この考えは合っているのでしょうか? 各クライアントにもインストールが必要なのでしょうか? よろしくお願い致します。

  • VB6(SP5)+OO4OでCreateObjectが失敗する

    上記の環境でプログラムを作成しています。 Windows2000ではうまくいきました。 WindowsXP(Professional)で失敗します。 Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase(C_ORACLE_TNS, C_ORACLE_USER & "/" & C_ORACLE_PASS, 0) のようなコーディングでCreateObjectのところで失敗しエラーとして429 ActiveX コンポーネントはオブジェクトを作成できません。 というのが発生します。 Oracleのバージョンは9iでそのクライアントパック9.2.0.1.0を管理者モードでインストールしています。 もちろんOO4Oはインストールされていますし、VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。 何度か再インストールなどしましたが全く同じです。何がいけないのでしょうか?直接回答でなくてもヒントでも何でも教えてください。 なおSQL Plusでテーブルの参照はできています。

  • vbからoracleへの接続

    vbからoracleへの接続について教えて下さい。 ORACLEデータベースにoo4oを使って接続をしているのですが、Oracleクライアントをインストール済みのPCでは何ら問題なく接続できます。 OracleクライアントをインストールしていないPCではエラーメッセージがでてしまいます。 処理はこんな感じです... Public ssOra As Object       Public dbOra As OraDatabase Public dynOra As OraDynaset Set ssOra = CreateObject("OracleInProcServer.XOraSession") Set dbOra = ssOra.OpenDatabase("HRH", "HRH00/HRH00", 0&) Set dynOra = dbOra.DbCreateDynaset("select * from 消耗品_注文履歴", 0&) Set ssOra... のところでエラーとなってしまいます。エラー内容は ********実行時エラー'429'***************************** ActiveXコンポーネントはオブジェクトを作成できません ************************************************** activeX,oracle関連のDLLファイルは参照設定に登録しています。 これを解決するためにはOracleクライアントをインストールするしかないのでしょうか? また、インストールしたらエラーは本当になくなるのでしょうか? 皆様宜しくお願いします。 ちなみにクライアントPCはOS:WIN95 oracleバージョン8.1.7です

  • Oracleのバックアップについて

    Oracleのバックアップについてお教えください。 現在サーバとバックアップサーバを用意して、VBのアプリケーションがサーバのDBを更新したら、リアルタイムでバックアップサーバのDBを更新するという仕組みを作ろうと考えています。 もちろん、サーバとバックアップサーバには両方同じ環境を用意しようと思います。 環境は、サーバ、バックアップサーバとも、 Windows2000Server(sp2) Oracle8.1.7 です。 伺いたいのは以下の4点です。 1.リアルタイムにバックアップサーバのDBを更新することは可能でしょうか? 2.もしできるとするならば、それはOracleの設定でしょうか?それともサーバ(Windows2000)の設定でしょうか? 3.もしOracleの設定でしたら、それは標準のOracleWorkGroupServerで実現できるのでしょうか? 4.バックアップツールにARCserve2000を使用する予定です(Backup Agent for Oracle Japaneseは使用しない予定です)。もしかしてARCserveで実現できますか? すみません。サーバの管理は初めてなので。 Oracleのマニュアルのどこを見たらいいかも分からない状況です。 環境等補足するところがございましたらその旨をお書きください。

  • ORACLEのアクセス

    oracle10gで構築したDBをoracle9iのクライアントからアクセス可能でしょうか。(SQLを参照したりVBで作成しらプログラムからODBC/OLE形式でアクセスする)

  • VB+Oracleで「特定できないエラー」

    皆様、いつも御世話になっております。 OS : Windows 2003 Server 開発環境 : VB6.0 + Oracle8 ライブラリ : Microsoft ActiveX DataObjects 2.8 Library ADOでODBC経由でOracleに接続し、 (接続文字列 DSN=XXXX;UID=XXXX;PWD=XXXX) Set rst = New ADODB.Recordset sql = "select * from TBL0001" ●rst.Open sql, cnn, adOpenStatic, adLockOptimistic do while not rst.eof rst("FLD0001")=XXXX ..... この●の行で「特定できないエラー」と出てしまいます。 詳細も不明なので、原因が全くわかりません。 稀にうまく動作するのですが、ある程度レコード処理をして、再度●へ戻るとエラーが出ます。 お手数ですが、宜しくお願い致します。

  • oracleのメモリ使用量が97%ほどに・・・減らしたいです

    いつもお世話になります。 oracle8.1.7がインストールされている Linux サーバに関して、現在メモリ使用量が逼迫しているためか、 時々OSの処理が重くなり、応答が無くなる事が多々発生して困っています。 Database:Oracle 8.1.7 Enterprise Edition Linux:RedHat Linux 6.2 freeコマンドで調べたところ、 --------------------------------------------------------------------------- [root@sample dir1]# free total used free shared buffers cached Mem: 2073296 1996752 76544 1575952 112904 813364 -/+ buffers/cache: 1070484 1002812 Swap: 2097136 2536 2094600 --------------------------------------------------------------------------- topコマンドで調べたところ(Shift + M でメモリ使用順としました) --------------------------------------------------------------------------- 6:05pm up 5:06, 2 users, load average: 0.22, 0.11, 0.10 69 processes: 66 sleeping, 1 running, 0 zombie, 2 stopped CPU states: 17.3% user, 1.4% system, 0.0% nice, 81.1% idle Mem: 2073296K av, 1996832K used, 76464K free, 2385012K shrd, 110684K buff Swap: 2097136K av, 2632K used, 2094504K free 816100K cached PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND 1672 oracle 0 0 848M 848M 847M S 604M 0.0 41.9 13:47 oracle 1710 oracle 4 0 458M 458M 456M S 445M 1.5 22.6 13:03 oracle 1767 oracle 6 0 350M 350M 348M S 337M 2.3 17.3 10:17 oracle 1764 oracle 6 0 347M 347M 342M S 331M 2.3 17.1 4:38 oracle 1915 oracle 16 0 84564 82M 80532 S 68M 29.2 4.0 0:59 oracle 1688 oracle 0 0 74804 72M 73592 S 71M 0.0 3.5 0:36 oracle 1677 oracle 0 0 62808 61M 61100 S 46M 0.0 3.0 0:44 oracle 848 oracle 0 0 39160 38M 37960 S 36M 0.0 1.8 0:01 oracle 854 oracle 0 0 30092 29M 29632 S 25M 0.0 1.4 0:01 oracle 852 oracle 0 0 14592 14M 14144 S 9.8M 0.0 0.7 0:02 oracle ---------------------------------------------------------------------------  ※10件のみとしました 上記となり、恐らくoracleがメモリ使用量を圧迫し、Swap領域も逼迫した場合にサーバ処理の 応答が無くなると推測しています。 上記を改善するために、init.ora 内の以下の項目を編集しようと考えていますが、数値を決めかねています。 サーバがフリーズ状態(僅かながらもゆっくり動いている)原因について、 何でも結構ですので、アドバイスいただけたらと思います。よろしくお願いいたします。 open_cursors = 1000 max_enabled_roles = 30 db_block_buffers = 64000 shared_pool_size = 524288000 large_pool_size = 1048576 java_pool_size = 0 log_checkpoint_interval = 10000 log_checkpoint_timeout = 1800 processes = 150 log_buffer = 532480 db_block_size = 8192 sort_area_size = 1048576 sort_area_retained_size = 1048576

  • VB.NET Oracle接続 クライアント混在

    <環境1> WinXP Oracle Client 7(?) <環境2> Win7 Oracle Client 10g(10.1.0.2.0) <サーバ> Oracle Database 7(?) こんにちわ、いつもお世話になってます。 VB.NETでoo4oにてOracleに接続するWinアプリがあります。 (なんでODPやADOを使わないんだ、という意見はナシでお願いします そもそもOracle7ではODP.NETってなかったもんですから。。。) 今までは環境1だけでしたが、環境2が出現しました。 当然、oo4oなのでInProcServerのバージョン違いにより 環境2からOracleDBへの接続はエラーとなります。 この環境2への対応が必要となっています。 そこでお聞きしたいのが 環境1、2両方に対応させるためにどのような方法をとるのがベストか、です。 現状、考えている方法は ・そもそもEXEをOra7用(InProc使用)とOra10g(ODP.NET)用に分ける ・Win7ProならXPモードにOra7をインストールする ・いっその事DB接続から何からADO.NETにかえる できれば理由付きでどんな方法が最善かご教授願います。

専門家に質問してみよう