Q&A

  • ODAC에 SessionByName와 BDE에 Session.FindDatabase비교 문의.
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.OraSession1.Open;
  Form2.OraSession1.Open;

  Form1.OraSession1.StartTransaction;
  Form2.OraSession1.StartTransaction;

  SessionByName('OraSession1').Commit;

  if Form1.OraSession1.InTransaction then
  begin
    ShowMessage('Form1.OraSession1');
  end;

  if Form2.OraSession1.InTransaction then
  begin
    ShowMessage('Form2.OraSession1');
  end;

  Form1.OraSession1.Commit;
  Form1.OraSession1.Commit;

  Form2.OraSession1.Commit;
end;

두개의 폼에 각각 OraSession1이라는 이름의 컴포넌트를 올려두고 동일한 데이타베이스에 접속하도록 했습니다.

SessionByName('OraSession1')을 이용하여 찾아진 OraSession에 Commit나 Rollback를 실행하면 어느폼에 있는 OraSession1이 처리되는지 확인해 보았더니 대중이 없어 보입니다.

줄곧 BDE를 사용하다보니 Session.FindDatabase를 이용해도 어플에서 동일한 이름으로 두개의 데이타베이스를 허용하지 않아서 믿을만 하였으나 ODAC는 이런 제약이 없는것 처럼 보입니다.

ODAC를 이용하여 프로그램을 작성하면 OraSession에 트랜젝션 처리를 위해 어떻게 사용하는지 궁금합니다.
전역에 OraSession을 올려놓고 시작할때 초기화 시켜서 호출하여 사용한다던가 디비 작업을 할때마다 커넥션을 생성하여 작업을 실행하고 커넥션을 파괴 한다던가...

경험자 분들의 조언을 기대해 봅니다. ^^
1  COMMENTS
  • Profile
    양용성 2008.12.13 03:21
    오라클에 트랜잭션이 생겼는지 검사하는 방법은
    연결이 끊었을 경우나 트랜잭션이 있는지 확인하려고 할때 오라클에 쿼리 하는 방법 밖에 없습니다.

    오라클 서버에 현재 세션에 트랜잭션이 있는지 쿼리 하면 리턴해 옵니다.



    SELECT a.sid, a.username, b.xidusn, b.used_urec, b.used_ublk
    FROM v$session a, v$transaction b
    WHERE a.saddr = b.ses_addr;

    여기에서 SID 를 초기 로그인할때 알아 오면 되겠죠..

    target=_blank>http://www.sqlgate.com

    • 김현철
    • 2008.12.18 19:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 난난난난
      2008.12.19 02:24
      일반적으로는 메모안에서 enter를 치면 다음칸으로 나옵니다. 님의 경우는 화면에 KeyPreview := True...
    • 김현철
      2008.12.19 18:02
      답글 감사합니다! 님의 얘기대로 했더니... 메모에서 포커스가 없어졌습니다. 포커스가 다음으로 이동...
    • 이강석
      2008.12.18 18:21
      페이지 틀린 곳의 버튼 speed1이고 누르려고 하는 버튼이 speed2라면 speed1Click이벤트 코딩하는 부분...
    • 전봉수
      2008.12.18 20:36
      // 입력탭의 수정 스피드버튼 실행 및 에디터에 값 넣기 IF PAGECONTROL1.ActivePage = TABSHEET1 THEN ...
    • 이강석
      2008.12.18 02:42
      구분되어 있는 다른 스피드 버튼을 눌러지게 한다는 말이 혹시 현재 탭 말고 다른 탭에 있는 버튼을 어떤...
    • 이정욱
      2008.12.18 04:11
      그냥 그 이벤트 호출 해주시면 되는데요.... 만약 Button1Click 로 되어있다면, Button1Click(Button1) ...
    • 전봉수
      2008.12.18 05:32
      이강석님 이정욱님 답변감사합니다. 이강석님 말씀 대로 입니다. "단" 어떤 시점이 아니고 수동으로 눌...
    • 홍성락
      2008.12.18 07:39
      말씀하신걸 직역하면 어떤 스피드 버튼을 클릭하는게 아니라 눌러진 상태로 만든다는 말씀이시지요. 1. ...
    • 전봉수
      2008.12.18 11:25
      홍성락님 답변 감사합니다. 저의 질문을 다른방향으로 이해시신것 같씁니다. 제가질문 들인것은 스피드...
    • 홍성락
      2008.12.18 18:25
      그렇다면 위의 이정욱님 말씀대로하면 될건데요...같은 폼이라면 아무리 페이지컨트롤로 나뉜다하여도 같...
    • 전봉수
      2008.12.18 20:35
      // 입력탭의 수정 스피드버튼 실행 및 에디터에 값 넣기 IF PAGECONTROL1.ActivePage = TABSHEET1 THEN ...
    • 꼬꼬마
    • 2008.12.17 23:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.18 01:40
      Cells에 들어가는 값이 Row, Column순입니다. 이것만 잘 맞추시면 될것같은데요... idx변수가 요일을 나...
    • 꼬꼬마
      2008.12.18 21:43
      근데요// 어떤식으로 해야 되는거져? 일자에 기준으로 데이터를 뿌려주려고 하는데; 이거 생각보다 잘...
    • 최용일
      2008.12.19 02:16
      글쎄요... 그렇게 말씀하시면 더이상 할 말이 없는데요... 데이터들이 들어가야 할 셀의 위치를 다 알고...
    • 홍성락
      2008.12.17 22:42
      Message.WParam의 내용값이 문자렬 시작 주소라서 그냥 DataStr:= PChar(Message.WParam); 또는 DataSt...
    • 최용일
      2008.12.17 23:22
      WM_USER로는 문자열을 받기 힘들건데요... 양쪽 프로세스 간의 주소쳬계들이 달라서 전송을 해봤자 쓸 수...
    • 이정욱
      2008.12.18 04:13
      아니면 소켓 놓고.. 127.0.0.1 로컬로 문자 주고 받으셔도...ㅡㅡ;
    • 김현철
    • 2008.12.17 15:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.17 20:01
      쿼리 자체를 안한다면 모를까... 쿼리한 필드를 없앨 수는 없구요... 업데이트할 때 TUpdateSQL을 써서 ...
    • 김현철
      2008.12.17 20:44
      현재 사용하고있는 컴퍼넌트가 dbexpress에 있는 것을 사용하다보니... TUpdateSQL를 쓰기에는 좀..... ...
    • 이강석
      2008.12.17 18:37
      단순히 위에 코드만 적어주시면 어떤 부분에서 에러나 나는지 익셉션이 나는건지 알 수가 없을거 같은데....
    • 윤박사
      2008.12.17 19:09
      If Not AThread.Terminated And AThread.Connection.Connected Then Begin Try ...
    • 최용일
      2008.12.17 23:27
      서버쪽 소스같은데... AThread.Terminate;는 왜하시는지 모르겠네요... 이유가 있겠죠... 암튼... 서...
    • 이강석
      2008.12.17 23:38
      음...ReadBuffer말고 ReadLn으로 읽으셔서...구조체의 맨마지막에 종료문자코드를 주시고 읽으시면 안되...
    • 이강석
      2008.12.17 23:40
      type TCommBlock = record Msg : array[1..5000] of Byte; ...
    • 이정욱
      2008.12.18 04:15
      근데.. 왜 Record로 하셨는지..... 위 같은 식이라면 그냥.. var Msg : array[1..5000] of Byte; ...
    • 최용일
      2008.12.17 19:17
      델파이7은 Update1까지 나와 있습니다. 설치해주시면 될것같네요... 관련 파일은 코드기어 홈페이지에 ...
    • 맥스
      2008.12.18 00:04
      최 용 일 님 ^^ Update1 해주는거랑 안해주는거..차이 많이 나나여 ?
    • 최용일
      2008.12.18 05:27
      글쎄요... 차이에 대해선 생각해본적이 없어서... 그래도 여러가지 버그들도 고쳐졌고 했으니까 Update...
    • phono
      2008.12.18 18:40
      update1을 패치해 주지 않으면.. ado 와 연동되는 TAdo 쿼리의 sql.add 같은 펑션 사용하여 쿼리문...
    • 맥스
      2008.12.18 19:49
      phono님.. update1 패치 다운로드 꽁짜 맞아여? 불법 델파이를 써서요 ;;
    • lee, js
    • 2008.12.17 03:29
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 밴댕이
    • 2008.12.17 02:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.17 04:34
      TCanvas.TextOut보다는 API의 ExtTextOut이나 DrawText/DrawTextEx같이 글자를 클립핑해서 쓸 수 있는 함...
    • 이강석
      2008.12.17 18:40
      열때 오류가 발생하는건 대부분 컴포넌트를 사용한 소스를 컴포넌트가 없는 상태에서 열때 날거 같긴한데...
    • 구창민
      2008.12.16 01:11
      안녕하세요... BringToFront 와 SendToBack 을 이용해 보세요.. 즐거운 프로그래밍 하시구요~
    • 이강석
      2008.12.17 23:44
      패스워드나 암호를 login.cgi로 넘길때 login_id.Text나 login_pw.Text는 에디트일거 같은데 단순한 문자...
    • 귀여운대빵
      2008.12.18 02:35
      앗^^ 답변 감사합니다. 아래방식으로 해결되었습니다. procedure setcookies; var i, count:int...
    • 선종욱
    • 2008.12.13 01:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 양용성
      2008.12.13 03:21
      오라클에 트랜잭션이 생겼는지 검사하는 방법은 연결이 끊었을 경우나 트랜잭션이 있는지 확인하려고 ...
    • 허수진
    • 2008.12.13 00:26
    • 0 COMMENTS
    • /
    • 0 LIKES
    • cell
    • 2008.12.12 18:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바람
      2008.12.12 19:36
      Procedure Val 과 혼동되는건 아닌지요 변수명 Val을 딴 이름으로 바꿔보세요
    • 김현철
    • 2008.12.12 02:45
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.12 03:14
      에러메세지로 보면 아웃룩이 설치안되어 있는것 같네요... 방법1,2둘다 별 차이없구요. 반드시 Micros...
    • 김현철
      2008.12.12 03:33
      답글 감사합니다. 여러 글을 읽는 중에 봤음에도 불구하고 정확히 이해를 못해서 헤매고 있었네여! 자...
    • 최용일
      2008.12.12 03:55
      델파이7이면 FastNet컴포넌트(TNMSMTP) 대신에 Indy 9버전이 기본으로 들어가 있을건데요... Indy로 메...
    • 김현철
      2008.12.12 04:40
      최용일님... 혹시 http://www.delphi.co.kr/zboard/view.php?id=tips&no=1395 기억하시나여? 좋은 샘...
    • 최용일
      2008.12.12 06:06
      파일 첨부 기능만 추가하시면 되겠네요...
    • 남호성
    • 2008.12.12 00:56
    • 0 COMMENTS
    • /
    • 0 LIKES