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

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

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

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

VB.NET

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

Q&A

解決済

3回答

10855閲覧

Oracle19cデータベースとVisualbasicの接続

junmaru0616

総合スコア1

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

VB.NET

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

0グッド

0クリップ

投稿2021/10/11 02:11

編集2021/10/11 04:43

前提・実現したいこと

Visual studio内、Visualbasicにてアプリケーションを開発しているのですが、
その中でoracleデータベースのデータソースを使用したいです。

発生している問題・エラーメッセージ

Data SourceサイドバーのAdd New DataSourceからOracle データベースの接続を試みた際に、
以下のエラーメッセージが表示され、接続ができません。

'Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64bit mode with the 32 bit Oracle client components installed.'

該当のソースコード

試したこと

確認したこと
https://www.projectgroup.info/tips/Oracle/Oracle_000023.html
を参考にOracleサーバ及びクライアントの対応bit数を確認。
クライアントについては上記方法にて確認、
サーバ側はver19.3.0であることから64bit版と判断。

補足情報(FW/ツールのバージョンなど)

各種バージョンです。
Windows10
VisualStudio2015
Oracle 19.3.0 Enterprise Edition

Oracleデータベースのデータソースですが、
Oracle 11g(32bit版)からdumpファイルにて移行したものになっています。
こちらとの関係性についてもご教示いただけますと幸いです。

当方Oracleに触れてまだ1か月にも満たない初心者のため
理解が浅く、必要な情報が不足しているかもしれません。
おっしゃっていただければ情報捕捉させていただきます。

また、他サイトにて.NET FrameworkやOracleの32bit版を使う対応は拝見したのですが、
可能であれば64bit版の環境で開発を進める方法を教えていただきたいです。

以上、何卒宜しくお願い致します。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/10/11 02:57

VB.NET のタグをつけてください。
junmaru0616

2021/10/11 05:21

ご指摘の通りタグを追加しました。
guest

回答3

0

選択肢としては2つあります。

(1) 64ビットの Oracle Client をインストールし、ODP.NET の非管理対象ドライバ(Oracle.DataAccess) を使う

おそらく、32ビットの Oracle Client がインストールされているでしょうから、64ビットのものをインストールしてください。

(2) ODP.NET の管理対象ドライバ(Oracle.ManagedDataAccess) を使う

管理対象ドライバは Oracle Client に依存しませんので開発は楽かと思います。

「.NETへの快適なドライブ」
https://www.oracle.com/jp/technical-resources/articles/dotnet/o24odp.html

「ODP.NETをNuGetからインストールする」
https://skill-note.net/post-692/

投稿2021/10/11 03:03

KOZ6.0

総合スコア2707

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

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

junmaru0616

2021/10/11 05:30

回答いただきありがとうございます。 エラーへの対応としては概ねSurferOnWwwさんと同内容でしたので、回答の早かったそちらをベストアンサーにさせていただきましたが、参考URLまでつけていただき非常にわかりやすい回答でした。
guest

0

ベストアンサー

VB.NET アプリが 64-bit OS で 64-bit で動いているのにプロバイダ(ODP.NET を使ってますか?)が 32-bit 版だから BadImageFormatException が出ているのだと思います。

プロバイダを 64-bit 版に変更することができますか? 可能であればそれを試してください。だめならアプリを x86 でコンパイルして試してみてください。

なお、Oracle 本体が 32-bit 版か 64-bit 版かは関係ないと思われます。エラーメッセージはアプリとプロバイダの 32/64-bit の整合の問題だと言っていますので。

投稿2021/10/11 02:54

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

junmaru0616

2021/10/11 05:20 編集

結論として、ご指摘の通りプロバイダのバージョンが古かったことが原因でした。 もともと導入されていたものが、’.NET Framework Data Provider for Oracle'でOracle 10gまでしか対応できないものでした。 今回、Oracle公式(https://www.oracle.com/jp/database/technologies/net-downloads.html)よりVisual Studio2015向けのODP.NETをダウンロードすることで、無事データベース接続することができました。誠にありがとうございました。 KOZ6.0さんとで悩みましたが、先に回答いただきましたのでベストアンサーとさせていただきます。
sazi

2021/10/11 05:24 編集

@SurferOnWwwさん 「Data SourceへのAdd New DataSource」時点でエラーの様ですから、コンパイル以前の話だと思うのですが。
退会済みユーザー

退会済みユーザー

2021/10/11 06:30

アプリはコンパイルは通って実行もでき、途中でアプリがプロバイダ経由で Oracle に接続するとき 32/64-bit の不整合の問題で例外がスローされたと思っているのですが・・・
sazi

2021/10/11 06:38

確認した訳では無いですが、質問に「Add New DataSourceからOracle データベースの接続を試みた際に」とあったので、追加しようとしてできなかったのかと思いました。
guest

0

投稿2021/10/11 03:43

Orlofsky

総合スコア16417

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

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

junmaru0616

2021/10/11 05:33

Oracle環境に関してはまだ疎いため、細かい点については分かりかねますが、 Oracleデータベース自体はバックグラウンドでも稼働していますので要件は満たしているのではないかと考えておりますが、要件満たさずとも稼働しうるのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問