- PR -

DbProviderFactoryのプロバイダー名には何を指定?

投稿者投稿内容
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-08-17 12:01
コンソールプログラムから、ODPで、Oracle10gへの接続を行っています。
汎用的に作ることが要求されていてDbProviderFactoryの使用を考えています。

DbProviderFactory provider = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
というように実行するとデータプロバイダが見つかりません。といわれてしまいます。

ここで気になるのですが、DbProviderFactoryというのは、machine.configに設定がないとそもそも
使えないものでしょうか?
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-08-17 13:42
そもそもDbConnectionが取得したいだけなんですよね。
でも、これってDbProviderFactoryからしか作成できないですよね?
DbConnection con = new OracleConnection()はコンパイルエラーなってしまいますし。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-08-17 14:47
DbProviderFactories.GetFactory("System.Data.SqlClient);なら
正常動作するので、Oracleの問題のようです。
Oracleの本家系に聞いてます。
ということでとりあえずこちらは閉じさせていただきます。
お騒がせしました。
原因がわかりましたら、こちらにもご報告します。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-08-17 15:18
検証してないので予想になりますが、
DbConnection con = new OracleConnection()がエラーになるということは
使っているOracle.DataAccess.dllのバージョンがADO.NET 2.0に
対応していないのでは?
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-08-17 15:28
ODPは本日ダウンロードしてきた10.1.0.4.0になります(最新)
動作環境をみると、.NET1.0以降なんてあいまいなこと書いてありますね。

vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-08-17 15:53
どうやらOTN Japanで配布しているバージョン(10.1.0.4.0)は.NET 1.xのみ
対応しているようです。

ちなみに先程、本家(米国)のOTNで配布しているバージョン(10.2.0.2.20)が
.NET 2.0に対応していると書いてあったので試してみたところうまくいきました。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-08-17 16:02
わざわざありがとうございます。
私もそのことに気付いてダウンロード中です。

ダウンロードはこちらですよね。
http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

英語版のこっちのサイトは別途、ユーザー登録が必要なんですね。
ちょっとエラーと格闘中。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-08-17 17:54
勘違いでした日本語サイトにありました。
ODT10201.exeというのをダウンロードしてきたのですが
大変なことに。
インストール時に、ファイルが上書きできないだの、キーがないだの
エラーが出て、無視したらOracleが起動できない。&
UniversalInstallerすら起動しなくなってしまった。
あきらめて、これからOracleの再インストールです(泣)

ところで、ODT10201.exeをインストールするときの
OracleHomeはもちろん、既存の場所を指定ですよね。
これ上書きしないとHomeが2個になってしまいますよね。

スキルアップ/キャリアアップ(JOB@IT)