답글 감사 드립니다.^^;
아래 처럼 구현 했는데 ....
try
session := TSession.Create(nil);
session.SessionName := 'session' + IntToStr(Random(1000));;
QRtmp := TQuery.Create(nil);
QRtmp.SessionName := session.SessionName;
QRtmp.DatabaseName := Database1.Databasename;
session.Active := True;
try
Database1.StartTransaction;
with QRtmp,QRtmp.SQL do begin
Close;Clear;
Add('insert into tmtable values(''aaa'',''bbbb'')' );
EXECSQL;
...
...
end;
Database1.Commit;
Except
ON E:Exception do begin
Database1.Rollback;
end;
end;
finally
QRtmp.free;
session.Free;
end;
EXECSQL 실행 부분에서 "UnKnown database : test " 라는 메세지가 나옵니다.
분명 QRtmp.DatabaseName 의 값은 Database1.Databasename 로 할당
되었고, Database1.Open 은 TForm1.CReate 부에서 Open 된 상태입니다.
뭐가 잘 못 된건지 종일 뒤져 보아도 해결이 되지 않네요~~ ^.^
그럼 수고 하세요~.~
꿈의대화 님이 쓰신 글 :
: 안녕하세요. ^^;
:
: 일단 Database는 하나만 생성하셔서 사용하셔도 되구요.
:
: 여러 Client에서 각각 Tquery를 생성하여 처리되어진다면
:
: 생성된 TQuery별로 Session을 따로 생성하셔서 작업하시면 됩니다.
:
: 그럼 수고하세요.^^;
:
: 델짱 님이 쓰신 글 :
: : 안녕하세요.^_^
: :
: : 인디서버 소켓, Database(BDE) 를 두고 클라이언트에서 보내온 string를
: : 파싱해서 ms-sql database 에 Insert , Update, delete 역활을 하는 소켓서버를
: : 만들려고 합니다.
: :
: : 클라인트 접속시 마다 Tqeury 를 생성해서 각 클라이언트의 요청을 처리합니다
: :
: : 그런데 한가지 염려 스러운게 있는데 Database는 1개 인데
: :
: : 클라이언트가 동시 접속해서 각각 동시 트랜잭션을 요구하면 충돌이 발생 될 것 같은데 ..
: :
: : 그렇다고 해서 DB insert, delete , update 시 동기화를 시키면 작업속도가
: : 많이 떨어질것 같고 ,
: :
: : 클라이언트 연결시 마다 새로운 DATABASE를 생성 연결하면 database connect시에
: : 시간이 많이 걸릴것 같고
: :
: : 좋은 해결 방법이 없을까요?
: :
: : database pooling 이 혹시 해결 방법이 되나요?
: : 혹시 이것이 해결 방법이라면 DB Pooling 을 어떤식으로 해야 되는지
: : 조금의 힌트 부탁 드립니다.
: :
: : 그럼 행복한 주말 보네세요 ^.~
|