Q&A

  • firebird DB 갱신 아무리해도 않되요 ㅜㅜ
안녕하세요. 또 염치 불구하고, 도움만 받는 백성이 질문드립니다.
firebird 1.5와 zeos component를 이용한 간단한 c/s 프로그램을
구현하고자 작성하였습니다. 그런데, pc1에서 수정한 내용을 실시간으로
pc2에서 조회하면 보이지 않다가, 종료하고 다시 실행하면 보입니다.
여러 고수님의 조언대로 해 보았으나 결과는 동일합니다.
뭘 잘못했는지 모르겠습니다. commit를 않해서 그렇다고 하는데
zeos에서 transaction을 이용해서 commit하는 방법을 모르겠습니다.
제가 사용한 것은 아래와 같습니다.  

  ZConnection1.StartTransaction ;
  try
    쿼리
    ZConnection1.Commit ;
  except
    ZConnection1.Rollback ;
  end ;

DB에 forced write도 써 봤고, table자체에도 commit을 해 봤는데
결과는 모두 동일합니다. 어떻게 하면 되죠? 고민끝에 고수님의 조언을 기다립니다.
3  COMMENTS
  • Profile
    아폴론 2006.01.23 23:18


    그럴리가 있나요
      ZConnection1.StartTransaction ;
      try
        쿼리.Execsql;
        ZConnection1.Commit ;
      except
        ZConnection1.Rollback ;
      end ;

    다른 클라이언트에서 쿼리조회시 적용된 값이 나타납니다.
    그런데 저는 IBTransaction1.StartTransaction; 인데...
    zeos 콤포넌트는 ZConnection1에 트랜잭션을 거나요??...
      


  • Profile
    이상수 2006.01.23 23:32

    먼저, 답변 감사드립니다.
    zeos 콤포넌트에는 interbase처럼 transaction콤포넌트가 없어서
    그렇게 썼습니다. firebird DB를 쓸때는 zeos로 쓴다고 해서
    작성을 했습니다만, 다른 방법이 있으시면 꼭 알려주세요. 벌써 일주일째 ㅜㅜ...
    firebird를 zeos가 아닌 다른 걸로 콘트롤 할 수도 있나요?
    모든게 궁금해 지네요. 다시한번 답변 감사드립니다.

  • Profile
    이상수 2006.01.24 00:09
    안녕하세요. zeos library 교육자료를 참고하다가 해답을 찾았습니다.
    test해 보니 정말 그렇게 되네요. 의외로 간단한 것을 그렇게 ㅜㅜ...
    zeos내에 ZConnection콤포넌트에 Autocommit를 False로 하고,
    Transactlsolationlevel을 tiReadCommitted로 바꿔야 합니다.
    이걸 몰랐네요. 도움주신데 대해 다시한번 감사드립니다.
    수고하세요.