2009-09-09 5 views
0

데이터베이스 처리 단계에서 오류가 발생하면 프로그램이 전체 프로세스를 롤백해야한다는 것을 알고 싶습니다.MFC/C++에 데이터베이스 트랜잭션 메커니즘이 있습니까?

MFC에서 좋은 ORM/C++ 이거?

+1

이 사용중인 데이터베이스에 의존하지 않는다? 예를 들어 액세스는 트랜잭션을 지원하지 않습니다. MySQL은 DB 엔진에 따라 ... C++의 –

답변

2

MFC _ConnectionPtr 개체에는 BeginTrans, CommitTrans 및 RollbackTrans 메서드가 있습니다.

http://msdn.microsoft.com/en-us/library/ms675942(VS.85).aspx

당신이 그것을 포장 할 것, 좋은 생각을 호출하지 것이다.

+1

- RAII-Classes를 사용하여이를 래핑합니다. 생성자는 트랜잭션을 시작하고, 파기 전에 커밋이 적용되지 않으면 소멸자 롤백이 시작됩니다. –

1

SQL Server, Oracle, PostgreSQL, Firebird, 일부 MySQL 데이터베이스와 같은 트랜잭션 데이터베이스에 연결하는 경우 거래용 API가 있습니다. 마찬가지로 일부 비 -SQL 데이터베이스는 트랜잭션 의미론 및 관련 API (예 : Berkeley DB)를 가지고 있습니다. 당신이 사용하고있는 데이터베이스에 대해 언급하지 않았기 때문에 나는 무엇을 말할 것인가를 정말로 모른다.

2

이것은 ORM과 아무 관련이 없습니다. 당신이 MFC를 사용하는 경우 그런 다음, 기본 트랜잭션 기능을 당신이 당신의 데이터베이스 중 하나 CDatabase (ODBC)를 통해 작업하는 가장 가능성이

를 원하는 CDaoWorkspace/ CDaoDatabase (DAO) 또는 CDataConnection/ CSession (OLE DB). 그렇다면 각각 CDatabase::Rollback, CDaoWorkspace::Rollback 또는 CSession::Abort을 사용해야합니다.

관련 문제