개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.16 11:03

ODBC 롤백 관련 질문

목록
  • C언어전사 3일 전 2025.07.16 11:03
  • 49
    1
저는 현재 ODBC를 사용하여 데이터베이스 연동 중입니다.

ODBC 롤백 함수인 `odbc_rollback()` 에 대해 이해를 못하겠는데요.
`odbc_rollback()` 함수의 사용 예시와, 롤백을 수행하는 시점에 대해 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  3일 전



    `odbc_rollback()` 함수는 ODBC 트랜잭션을 롤백하는 데 사용됩니다. 트랜잭션은 여러 쿼리를 하나의 단위로 처리하는 것을 의미합니다.

    트랜잭션을 롤백하면, 트랜잭션 내에서 수행된 모든 쿼리가 취소됩니다.

    `odbc_rollback()` 함수를 사용하는 예시는 다음과 같습니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    int main() {
    
        // ODBC 연결 설정
    
        ODBC_ENV *env;
    
        ODBC_STMT *stmt;
    
        SQLHDBC hdbc;
    
        SQLHSTMT hstmt;
    
    
    
        // ODBC 연결 설정 및 트랜잭션 시작
    
        SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
    
        SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
    
        SQLAllocHandle(SQL_HANDLE_DBC, env, &hdbc);
    
        SQLConnect(hdbc, "데이터베이스 이름", "사용자 이름", "비밀번호");
    
        SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
    
        SQLBeginTransaction(hstmt);
    
    
    
        // 트랜잭션 내에서 쿼리 수행
    
        SQLExecDirect(hstmt, "INSERT INTO 테이블 이름 VALUES ('값1', '값2')", SQL_NTS);
    
        SQLExecDirect(hstmt, "UPDATE 테이블 이름 SET 값1 = '새로운 값1' WHERE 값2 = '값2'", SQL_NTS);
    
    
    
        // 롤백
    
        odbc_rollback(hdbc);
    
    
    
        // 트랜잭션 종료
    
        SQLTransCommit(hstmt);
    
    
    
        // ODBC 연결 해제
    
        SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
    
        SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    
        SQLFreeHandle(SQL_HANDLE_ENV, env);
    
    
    
        return 0;
    
    }
    
    


    `odbc_rollback()` 함수를 호출하는 시점은 트랜잭션 내에서 롤백을 수행하고자 할 때입니다. 일반적으로 트랜잭션 내에서 오류가 발생한 경우 롤백을 수행합니다.

    트랜잭션 내에서 롤백을 수행하기 전에, 트랜잭션을 시작해야 합니다. 트랜잭션을 시작하는 함수는 `SQLBeginTransaction()` 함수입니다.

    트랜잭션을 종료하는 함수는 `SQLTransCommit()` 함수입니다. 트랜잭션을 종료할 때, 트랜잭션 내에서 수행된 쿼리가 모두 반영됩니다.

    `odbc_rollback()` 함수를 호출하지 않고, 트랜잭션을 종료하면 트랜잭션 내에서 수행된 쿼리가 모두 반영됩니다.

    `odbc_rollback()` 함수를 호출하면 트랜잭션 내에서 수행된 쿼리가 모두 취소됩니다.

    트랜잭션 내에서 롤백을 수행할 때, `odbc_rollback()` 함수를 호출하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생한 경우, 롤백을 수행하여 트랜잭션 내에서 수행된 쿼리를 취소합니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜잭션 내에서 수행된 쿼리를 반영합니다.

    트랜잭션 내에서 롤백을 수행하는 시점은 트랜잭션 내에서 오류가 발생한 경우입니다.

    트랜잭션 내에서 오류가 발생하지 않은 경우, 트랜잭션을 종료하여 트랜

    2025-07-16 11:04

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,338건 / 60 페이지

검색

게시물 검색