疑問に思った事があるので知っている方居りましたら知恵をお貸しください。
dbExpressを使用した場合の話です。
以下のコードを用いてoracleに接続したとします。
SQLConnection := TSQLConnection.Create(Application.Owner);
SQLConnection.DriverName := 'Oracle';
SQLConnection.LibraryName := 'dbexpora.dll';
SQLConnection.VendorLib := 'oci.dll';
SQLConnection.GetDriverFunc := 'getSQLDriverORACLE';
SQLConnection.Params.Values['DataBase'] := 'hoehoe';
SQLConnection.Params.Values['User_Name'] := 'hoehoe';
SQLConnection.Params.Values['Password'] := 'hoehoe';
SQLConnection.Open;
SQLConnection.Close;
SQLConnection.Open;
コードの最後の部分で一度Closeをしてからもう一度Openをしています。
これはなんらかの原因でコネクションが切れた時に再接続出来るかどうかのテストをしているのだと思ってください。
このコードを実行するとClose後のOpenでエラーが発生します。皆さんはdbExpress使用時にどのようにして再接続を行っているのでしょうか?
Close時に内部的にインスタンスが解放されてしまっているのかと思いCreateから各種パラメータを再設定しても現象は変わりませんでした。
KeepConnectionの設定はしていますか?
ツイート | ![]() |