Q&A

  • Insert한 결과가 바로 적용이 안되네요;;

파이어버드2.0을 가지고 로그인하는 기능구현 중인데요.

구성은,
프로그램시작.
-> "로그인" 폼
-> [사용자등록] 버튼클릭
-> "사용자 등록" 폼 열기
-> 아이디, 패스워드를 DB에 등록 (쿼리 : Insert Into)
-> "사용자 등록" 폼 닫기
-> "로그인"폼으로 돌아와서 아이디 입력하여 로그인하기
요렇게 되어있거든요.

사용자등록에서 Insert해서 테이블에 새로운 레코드를 추가했는데,
다시 로그인창으로 돌아와서는 새로 등록된 내용을 못찾네요.
창 종료하고 다시 실행시키면 되는데, 바로는 안되는네요;;

로그인버튼 누르면 Select해서 아이디 찾는 건데,
Select 전에 'UPDATE 테이블이름' 하니까 오류가 나네요;;

일단 ZConnection의 Connected를 False했다가 True시키는 걸로 기능은 구현했는데,
그렇게 매번 DB와의 접속을 끊었다가 연결시키는 방법외에
변경이나 추가된 내용을 바로 적용시키는 방법은 없는지 궁금해서 글 남깁니다.

변경이나 추가된 내용을 바로 적용시키는 방법, 힌트 좀 부탁드려요~


3  COMMENTS
  • Profile
    newneo 2009.06.30 17:46
    안녕하세요!
    전 주로 Oracle 에 연결하여 사용하는 AP를 만드는데...( 참고로.. FireBird는 사용해 보진 않았습니다 )
    모든 DB 가 Transaction 을 제공하는 걸로 알고 있습니다.

    질문하신 내용을 보니...
    DML 문장을 사용하시기 전후에 ...
    Transaction 을 시작하고.. 끝내는 구문을 구성해 주셔야 할 듯 하군요.

    (1) DB.StartTransaction;
    .
    .
    (2) DML .. Query.. 실행
    .
    .
    성공하면
    (3) DB.Commit;
    실패하면
    (3) DB.Rollback;
    같은...

    그리고.. BDE에 .. SQLPASSTHRU MODE 라는 것도 있습니다... 살펴보세요...

    다시한번 말씀드리지만... FireBird는 사용해 보지 않아서 엉뚱한 답변일 수도 있습니다.
    즐코하세요.^^
  • Profile
    윤영훈 2009.07.01 02:59
    답변 감사합니다.
    저는 Commit하지 않고 그냥 SQL.Open이나 ExecSQL이런걸로 했었는 데,
    Commit하는 방법으로도 해봐야겠네요~
    기본없는 초보라서 이래저래 해봐야 할 방법이 많아요ㅎㅎ
  • Profile
    여운병 2009.07.31 01:09
    Tdatabase 컴포넌트를 더블클릭하시면 Parameter 입력부가 나오는데

    SQLPASSTHRU MODE=SHARED AUTOCOMMIT 로 설정되어 있는지 확인해보세요.

    이부분의 의미는 Database.Commit 없이도 execSql 호출시마다 바로바로 커밋됩니다.