[개발환경]
Delphi6
Oracle 8i
실행파일로 컴파일하여 데이타베이스에 연결한 후 연결을 끊고나서 토드에서 세션을 확인하면
세션이 연결되어있다 끊긴 것을 확인할 수 있습니다.
하지만 델파이 IDE환경에서 실행하여 연결한 후 Button2를 눌러 연결을 끊어도 세션이 끊어지질 않습니다.
프로그램을 종료하면 CPU창이 뜹니다.
제가 줄곧 VB만 개발해서 이런 창 떠도 전혀 도움이 되질 않고 왜 떴는지, 어디에 쓰이는 창인지도 잘 모르겠습니다.
Connection.Close; 이렇게 코딩하면 커넥션을 끊는다고 책에도 나와있는데 왜 안 끊기는지 이해할 수 없습니다.
컴파일한 실행파일에서도 프로그램을 종료하기 전까지 똑같이 세션이 안 끊기고 살아있습니다.
이러한 현상에 대해 잘 알고 계신 델파이 선배님들이 계시다면 답변 좀 부탁드리겠습니다.
----------------------------------------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ADOConnection1: TADOConnection;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOConnection1.ConnectionString:= 'Provider=MSDASQL.1;'
+ 'Password=xxxxxx;Persist Security Info=True;User ID=xxxxxx;'
+ 'Data Source=xxxxxx';
ADOConnection1.Open;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOConnection1.Close;
end;
end.
문제의 원인은 Driver에 있더군요...
다시말해서 OLE DB Driver를
1) MicroSoft OLE DB Provider for Oracle 또는
2) MicroSoft OLE DB Provider for ODBC Drivers를 이용할 경우에는 제게 발생했던 일이 발생하고요..
3) Oracle Provider for OLE DB를 이용하는 경우에는 제대로 수행이 되는군요...
책에 있는 내용을 무조건 신용할 순 없게 돼버렸네요.. ^^;;
답변도 안달리고해서 속으로 많이 고민했는데 드라이버 문제여서 다행입니다..
아마 다른 문제였다면 더 고생했을 것 같거던요...
제 글 읽어보시고 문제에 대해서 좀이라도 고민하셨던 델파이 선배님들...
새해 복 많이 받으시고 즐프하세요~~