Oracle接続について

解決


しんちゃん  2017-01-12 18:42:30  No: 48463

お世話になります。

下記の環境で開発を行っています。
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クライアントとネットワークコンポーネントって何なんでしょうか。
お手数おかけしますが、アドバイスの程  よろしくお願いいたします。


take  2017-01-12 21:37:50  No: 48464

なんだか初歩的なところでつまずいているみたいですが
この辺参考になりませんか?

http://former.sunvisor.net/delphi/oracle_ado

ADOConnectionをフォームにおいて使ったことはないですが
最低限ConnectionStringプロパティを設定しないと動かないのでは?

最初はサンプルで動作させてみて、そこからすこしずつ進めないと
理解が難しいと思います。
接続してからが本番です。


しんちゃん  2017-01-12 23:35:57  No: 48465

takeさんお返事ありがとうございます。
もちろん、ConnectionStringプロパティには接続条件が入力されています。


take  2017-01-12 23:48:27  No: 48466

もちろんというかその接続条件の書式に間違いがあるんじゃないのって疑っているのですが・・・
Oracle接続はしたことないけど他データベース接続で使用している代入式はこんな風にしてる

  s := 'Provider='+FEngineName+';';            // データベースエンジンを指定
  s := s + 'Data Source='+FFileName+';';        // データベースファイル名を指定
  s := s + 'User ID='+FUsername+';';              // アクセスユーザ名を指定
  s := s + 'Password='+FPassword;               // アクセスパスワードを指定
  ConnectionString := trim(s);


しんちゃん  2017-01-13 00:07:06  No: 48467

takeさんお返事ありがとうございます。
ConnectionStringプロパティは以下の通りです。
*************************************************
Provider=MSDAORA.1;Pasword=samplePass;User ID=sampleUser;Data Souce=ORCL;PersistSecurity Info=True
*************************************************


take  2017-01-13 01:15:30  No: 48468

Mr.XRAYさんのホームページから
http://mrxray.on.coocan.jp/Delphi/plSamples/634_ADO_Oracle.htm

SDAORA.1の指定をConnectionStringプロパティじゃなくて
Providerプロパティで指定するとか思ったけど

接続テストボタンでエラーが出るってことは
そもそもORCLへ正しく接続出来る環境になっていないってことですよね?

オラクルデータベースを作成した段階で
サンプルデータベースが作られるのでそれで試そうかと思ったけど
Oracle Database 12cには無いかも
ユーザー名:scott
pass:tiger


Mr.XRAY  2017-01-13 01:21:53  No: 48469

>Provider=MSDAORA.1

Oracle 9 以降は Provider=MSDAORA.1 では接続できなかったと思います.

Oracle Cororation (Oracle Corporation ?) が提供しているものを使用する必要があると思います.

>見つかりません。これらのコンポーネントはOracle Cororationから 
>提供され、Oracle Version 7.3.3(またはそれ以降)の 
>クライアントソフトウェアの一部としてインストールされます。

ということですね.


MAD  URL  2017-01-13 05:18:11  No: 48470

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版に接続できました。


Mr.XRAY  2017-01-13 06:02:02  No: 48471

おっ,Oracle 12c,MSDAORA.1 で接続できるんですか.
私のサイトの記事,修正しておきます.


しんちゃん  2017-01-14 20:48:17  No: 48472

解決しました。
tnsnames.ora内にあるhostのIPアドレスが間違っていました。

皆様、大変お騒がせしてしまい申し訳ありませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加