2009-09-09 69 views
0

我想確保如果在數據庫處理階段發生任何錯誤,程序將知道它需要回滾整個過程。在MFC/C++中是否有任何數據庫事務機制?

MFC/C++中的任何好的ORM都是這樣嗎?

+1

沒有這個取決於你正在使用的數據庫?例如訪問不支持事務,MySQL根據數據庫引擎執行操作,... C++中的 – 2009-09-09 06:48:22

回答

2

MFC _ConnectionPtr對象具有BeginTrans,CommitTrans和RollbackTrans方法。

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

我不會把它雖好,你需要把它包起來。

+1

- 使用RAII類來包裝它們。構造函數開始事務,如果在銷燬前沒有應用任何提交,則析構函數會回滾。 – 2009-09-10 14:25:48

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::RollbackCSession::Abort

相關問題