質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

5228閲覧

vb.net(2017) + .NET Framework4.8 + oo4o で、Orcleに接続可能かどうか

HANBU

総合スコア10

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2019/09/27 06:44

Windows環境にて、vb.net(2017) + .NET Framework4.8 + oo4o で、Orcle11gに接続可能かどうか教えてください。

実行環境については、以下が実行可能で、VB6アプリケーションからはOracleに接続できているPCとお考え下さい。
・vb.net(2017)で作成したexe
・.NET Framework4.8
・oo4o

現在、上記環境を用意する事が出来ずネットで情報を探したのですが、答えにたどり着かなかった為
こちらに助けを求めに来ました。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

「VB6アプリケーションからはOracleに接続できているPC」ということであれば接続は可能ですが、.NET から oo4o を使用するのはお勧めできません。

(1) COM オブジェクトを .NET でキレイに解放するのはとても難しい。

たとえば、OraDynaset オブジェクトを作成してフィールドの値を参照した場合、OraDynaset オブジェクトだけではなく、OraFields コレクション、OraField オブジェクトも Marshal.ReleaseObject で解放しなくてはなりません。
これをやらないと、「ORA-01000: 最大オープン・カーソル数を超えました。」エラーが頻発します。

(2) oo4o のプロパティは Object 宣言されているものが多く、.NET で使用すると遅い

oo4o を VB.NET から使用する場合、Option Strict Off を宣言して使うことになると思いますが、これが非常に遅いです。

かといって、Option Strict On にすると、キャストの嵐になって非常に見づらいものになります。

例) OraDynaset からフィールド値を取り出す

VB

1Dim dyn As OraDynaset 2Dim value As String 3value = DirectCast(DirectCast(DirectCast(dyn.Fields, OraFields)("Item1"), OraField).Value, String)

というわけで、私は ODP.NET を使ったクラスライブラリを作ってしまいました。
http://kozhouse.homeip.net/dotnet/oo4o/

簡易版のソースを公開しています。

投稿2019/09/27 07:53

KOZ6.0

総合スコア2626

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HANBU

2019/09/27 07:59

ご回答ありがとうございます。 ODP.NETで構築する際の参考にさせて頂きます。
guest

0

Oracle11g は既にどんな大きなバグが見つかっても新たにパッチは提供しない古いバージョンですから、商用利用するにはもっと新しいバージョンをおすすめします。

OO4Oは非推奨になっています。

Oracle11.2 Database Client インストレーション・ガイド for Microsoft Windows ソフトウェア要件 動作保証されているWindows PCを用意するのも難しくなりつつあります。

投稿2019/09/27 06:55

編集2019/09/27 07:14
Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HANBU

2019/09/27 07:15

Orlofskyさん、早急なご回答ありがとうございます。 ご指摘の通りOracle11gは古いバージョンであり、最低限Oracle12c + ODP.net で構築するべきなのは理解しているつもりですが、開発期間が短く既存のシステムをなるべく流用したいと考え、OO4Oを使うに至っている次第です。 なお、開発の目的は、vb6からvb.netへのシステム移行です。
Orlofsky

2019/09/27 07:22 編集

回答のURLにありますが、 >Oracle Database 11gリリース2(11.2)は、Oracle Objects for OLEをサポートする最後のデータベース・バージョンです。
HANBU

2019/09/27 07:42

諸々の理由で「Oracle11gが使用できなくなる迄はOO4Oを使用したい」が優先して、システム構築としては良くないのですが、環境を含めた改修を最小限にする為とご理解いただければ幸いです。
Orlofsky

2019/09/27 07:44

サポート契約が有効でしたら、オラクルのライセンスのバージョンアップは無料です。 わたしからはこれ以上コメントはしません。
HANBU

2019/09/27 08:01

わがままな質問にお付き合い頂きありがとうございました。
Q71

2019/09/27 13:46

目先の金をケチって、問題が長期化することによる大損をこく、という問題をよく見ます。自社の人件費は軽視されがちですが、使えるだけ使う方がいいのか、新しく作るタイミングで新しいものに変える方がいいのか、よく計算してみるとイイと思います。大体、こんなところで「使えますか?」と聞いている時点で、回答が返ってくるまで進めないという、余計な費用をかけているわけです。この経費、本当に軽視されています。
HANBU

2019/09/30 07:59

Q71さん、コメントありがとうございます。 おっしゃられている事全くその通りで、この関連の調査だけでかなりの工数をかけています。 >使えるだけ使う方がいいのか、新しく作るタイミングで新しいものに変える方がいいのか、よく計算してみるとイイと思います。  ⇒もう一度検討してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問