TSQLConnectionのDataBaseを変更して接続するには?


スーパービギナー  2009-09-12 01:11:24  No: 35626

はじめまして

タイトルの件ですが、説明しにくいのでソースを添付します。
フォームにボタンをいくつか配置し、ボタンのインデックスで
DataBase、ユーザ、パスワードを変更し接続を確認するPGですが、
起動して、1回目のボタン押下では正常に接続・切断ができますが、
2回目以降※1の部分でCPU画面が表示されイベントログに
Invalid Address specified to RtFreeHap(01170000,01178E60) 
が、表示され困っております。
どこかでアドレス違反があるのでしょうが、さっぱりわかりません。
どなたかご教授下さい。
よろしくお願いいたします。m(_ _)m

<!--- 以下  ソース ---!>
const
G_SERV : array [0..5] of String
                        = ('db1','db1','db1','wdb1','wdb1','wdb1');
G_USER : array [0..5] of String 
                        = ('AAA','BBB','CCC','DDD', 'EEE', 'FFF');
G_PASS : array [0..5] of String 
                        = ('AAA','BBB','CCC','DDD', 'EEE', 'FFF');

procedure TForm1.sConnected(idx : Integer);
var
  SQLC : TSQLConnection;
begin
  SQLC := TSQLConnection.Create(Self);
  SQLC.GetDriverFunc := 'getSQLDriverORACLE';
  SQLC.LibraryName := 'dbxora30.dll';
  SQLC.VendorLib := 'oci.dll';
  SQLC.ConnectionName := 'OracleConnection';
  SQLC.DriverName := 'Oracle';
  SQLC.LoginPrompt := False;
  SQLC.KeepConnection := True;

  with SQLC do
  begin
    Params.Values['DataBase']  := G_SERV[idx];
    Params.Values['User_Name'] := G_USER[idx];
    Params.Values['Password']  := G_PASS[idx];

    try
      SQLC.Connected := True;
    except
      ShowMessage('接続エラー');
      Exit;
    end;
  end;

  if SQLC.Connected then
    SQLC.Connected := False;    ←※1

  SQLC.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  sConnected(0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  sConnected(1);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  sConnected(2);
end;

<!--- ---!>


スーパービギナー  2009-09-12 01:20:10  No: 35627

環境は
Borland Developer Studio 2006
Windows XP
Oracle

です。


igy  2009-09-12 08:51:00  No: 35628

Oracleは使ったことがないのですが、
Borland Developer Studio 2006
は、Update 2 や Hotfix は適用してますか?


スーパービギナー  2009-09-12 17:47:38  No: 35629

igy様

>Update 2 や Hotfix は適用してますか?
とは、WindowsUpdateのことでしょうか?
これならば、メッセージが表示される都度適用しています。


igy  2009-09-12 17:51:56  No: 35630

>>Update 2 や Hotfix は適用してますか?
>とは、WindowsUpdateのことでしょうか?

Delphi Registered User Downloads
http://cc.embarcadero.com/reg/delphi

にある
Update 2 for Borland Developer Studio 2006
とか、
Hotfix ??? for Borland Developer Studio 2006
です。


スーパービギナー  2009-09-12 18:11:39  No: 35631

igy様

おはようございます。
朝早くからの返信ありがとうございます。
これは、まったくしたことが無いです。
これは、必ず行わなければならないのでしょうか?


igy  2009-09-12 18:21:37  No: 35632

>これは、必ず行わなければならないのでしょうか?

“必ず” ではありませんが、できれば適用したほうがよいかと思います。


スーパービギナー  2009-09-14 23:56:45  No: 35633

igy様
教えていただいたURLよりダウンロードしようと試みたのですが、
「Certificate No」を入力しないとダウンロードできないみたなのですが
「Certificate No」とは何のことでしょうか?


igy  2009-09-15 01:53:50  No: 35634

>教えていただいたURLよりダウンロードしようと試みたのですが、

Update 2 for Borland Developer Studio 2006 (Pro, Japanese)
で試したところ、
途中、Developer Networkにログインする画面など出て、
ログイン後、ファイルをダウンロードする画面まで表示出来ましたが、

>「Certificate No」を入力しないとダウンロードできない

この画面は、どのタイミングで表示しましたか?


GTR  2009-09-15 03:19:22  No: 35635

DataBase接続、切断の部分を

SQLC.Connected := true; → SQLC.Open;

SQLC.Connected := False; → SQLC.Close;

の様に変更してみてもだめでしょうか?


スーパービギナー  2009-09-15 17:59:33  No: 35636

igy様
>この画面は、どのタイミングで表示しましたか?
ダウンロードボタンと押下した後に表示されます。

GTR様
変更して試みましたがだめでした。


igy  2009-09-15 19:31:17  No: 35637

ダウンロード
http://www.codegear.com/jp/downloads
の下のダウンロードヘルプに、トラブルシューティング情報がありますが、
それでも解決できない場合には、
お問い合わせ
http://www.codegear.com/jp/about/contact
に問い合わせたほうがよいかもしれません。


スーパービギナー  2009-09-17 17:51:33  No: 35638

igy様
Update2を適用しましたが、改善されませんでした。
どうしようかなぁ


初心者  2009-09-18 03:45:10  No: 35639

だいぶ時間が過ぎていますので、ご覧になって居ないかもしれませんが...
Oracleの経験も全く有りませんがお許しを。
初歩的な事だけを書きます。

先ず、
const
G_SERV : array [0..5] of String
                        = ('db1','db1','db1','wdb1','wdb1','wdb1');
G_USER : array [0..5] of String 
                        = ('AAA','BBB','CCC','DDD', 'EEE', 'FFF');
G_PASS : array [0..5] of String 
                        = ('AAA','BBB','CCC','DDD', 'EEE', 'FFF');
ですが、予め必要事項はサーバーに登録されて居ると解釈して良いのでしょうか?。

私は、IBX+FireBirdでデータベースを運用しておりますが、上記項目は予め
設定された場合のみアクセス可能です。Oracleについては把握して居りません。

またTSQLConnection、ですが
動的生成ではなく、標準のコンポーネントのプロパティに必要事項を設定してみたらどうでしょうか?。

最後に、接続と切断を別個のイベントに記述してそれぞれの結果を見ては如何でしょうか。

「KeepConnection := True」のプロパティもちょっと気になります。


スーパービギナー  2009-09-19 00:41:17  No: 35640

>予め必要事項はサーバーに登録されて居ると解釈して良いのでしょうか?。
はい、サンプルなのでこのような書き方になってます。

>標準のコンポーネントのプロパティに必要事項を設定してみたらどうでしょうか?。
これも試しましたがだめでした。

調査?と言うか、試しに
SQLC.LibraryName := 'dbxora30.dll';
                        ↑この部分を
SQLC.LibraryName := 'dbexpora.dll';//(Delphi7のDLLを使用)
に、変えたところ正常に動くんです。

Oracleは10gですし、'dbxora30.dll'を推奨してるのになぜ動かない!!!


スーパービギナー  2009-09-19 00:42:33  No: 35641

初心者様
レスありがとうございます。

お名前、挨拶を記入するの忘れてましたm(_ _)m


初心者  2009-09-19 01:37:31  No: 35642

思いつきで申し訳ありませんが、ドライバー('dbxora30.dll')の代わりに
uses節に、「DbxOracle」を追加して見たらいかがですか?。
これは、Delphi2007でも使っています。

物は試しで。...


igy  2009-09-20 08:37:58  No: 35643

>Update2を適用しましたが、改善されませんでした。

ちなみに、Hotfix は適用しましたか?
# 改善されるかどうかわかりませんが・・・・


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

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






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