お世話になります。
下記の環境で開発を行っています。
Delphi XE5 Enterprise
Oracle Database 12c
Windows 8.1 Pro
ADOConnectionコンポーネントを利用してOracleデータベース接続を行いたいのですがエラーが発生して接続できません。
エラー発生プロセスは以下の通りです。
1.ADOConnectionコンポーネントをフォームに配置
2.ADOConnectionのデータリンクプロパティの
「サーバー名」「ユーザー名」「パスワード」を入力
3.接続テストボタンを押下
4.「プロバイダーの初期化中にエラーが発生したため、接続のテストに
失敗しました。Oracleクライアントとネットワークコンポーネントが
見つかりません。これらのコンポーネントはOracle Cororationから
提供され、Oracle Version 7.3.3(またはそれ以降)の
クライアントソフトウェアの一部としてインストールされます。
プロバイダーは、これらのコンポーネントがインストールされるまで
機能しません。」
というエラーメッセージが発生
なにやら足らないらいいですが
Oracleクライアントとネットワークコンポーネントって何なんでしょうか。
お手数おかけしますが、アドバイスの程 よろしくお願いいたします。
なんだか初歩的なところでつまずいているみたいですが
この辺参考になりませんか?
http://former.sunvisor.net/delphi/oracle_ado
ADOConnectionをフォームにおいて使ったことはないですが
最低限ConnectionStringプロパティを設定しないと動かないのでは?
最初はサンプルで動作させてみて、そこからすこしずつ進めないと
理解が難しいと思います。
接続してからが本番です。
takeさんお返事ありがとうございます。
もちろん、ConnectionStringプロパティには接続条件が入力されています。
もちろんというかその接続条件の書式に間違いがあるんじゃないのって疑っているのですが・・・
Oracle接続はしたことないけど他データベース接続で使用している代入式はこんな風にしてる
s := 'Provider='+FEngineName+';'; // データベースエンジンを指定
s := s + 'Data Source='+FFileName+';'; // データベースファイル名を指定
s := s + 'User ID='+FUsername+';'; // アクセスユーザ名を指定
s := s + 'Password='+FPassword; // アクセスパスワードを指定
ConnectionString := trim(s);
takeさんお返事ありがとうございます。
ConnectionStringプロパティは以下の通りです。
*************************************************
Provider=MSDAORA.1;Pasword=samplePass;User ID=sampleUser;Data Souce=ORCL;PersistSecurity Info=True
*************************************************
Mr.XRAYさんのホームページから
http://mrxray.on.coocan.jp/Delphi/plSamples/634_ADO_Oracle.htm
SDAORA.1の指定をConnectionStringプロパティじゃなくて
Providerプロパティで指定するとか思ったけど
接続テストボタンでエラーが出るってことは
そもそもORCLへ正しく接続出来る環境になっていないってことですよね?
オラクルデータベースを作成した段階で
サンプルデータベースが作られるのでそれで試そうかと思ったけど
Oracle Database 12cには無いかも
ユーザー名:scott
pass:tiger
>Provider=MSDAORA.1
Oracle 9 以降は Provider=MSDAORA.1 では接続できなかったと思います.
Oracle Cororation (Oracle Corporation ?) が提供しているものを使用する必要があると思います.
>見つかりません。これらのコンポーネントはOracle Cororationから
>提供され、Oracle Version 7.3.3(またはそれ以降)の
>クライアントソフトウェアの一部としてインストールされます。
ということですね.
C++Builderですが、
WideString wk; /* ワーク用 */
wk = "Provider=MSDAORA.1;";
wk += ("User ID=" + ini->ReadString("DB", "UserId", "") + ";");
wk += ("Password=" + ini->ReadString("DB", "Password", "") + ";");
wk += ("Data Source=" + ini->ReadString("DB", "DataSource", "") + ";");
wk += "Persist Security Info=True";
cn->ConnectionString = wk;
でExpress版に接続できました。
おっ,Oracle 12c,MSDAORA.1 で接続できるんですか.
私のサイトの記事,修正しておきます.
解決しました。
tnsnames.ora内にあるhostのIPアドレスが間違っていました。
皆様、大変お騒がせしてしまい申し訳ありませんでした。
ツイート | ![]() |