먼저 죄송하다는 사과부터 드려야겠군요.
TDataBase와 Tsession은 1:1로 대응되므로 Session은 DataBase와 같이 생성해야 합니다.
왜 갑자기 1 : n이 된다고 생각된건지 ㅡㅡ;;
잘못된 답변을 드려서 죄송할뿐이네요.
ps) 참고로 SessionName을 정할땐 Random보다는 생성된 thread 의 Handle값을
부여해 주는게 안전할것 같습니다.
델짱 님이 쓰신 글 :
: 답글 감사 드립니다.^^;
: 아래 처럼 구현 했는데 ....
:
: 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 을 어떤식으로 해야 되는지
: : : 조금의 힌트 부탁 드립니다.
: : :
: : : 그럼 행복한 주말 보네세요 ^.~
|