2016-11-10 66 views
0

我正在開發一個MFC應用程序(SDI)來更新,添加和刪除名爲security的數據庫中的表。 問題是更新表中的一行後,該行更新(我驗證),然後當我做另一個動作(更新另一行或刪除一行)更新被取消。我真的不知道CRecordset或數據庫本身是否存在問題。更新數據庫MFC C++ ODBC CRecordset

//m_pSet is a an instance of a class based on CRecordSet: 

m_pSet->Open(); 
m_pSet->Edit(); 
m_pSet->m_Security_Id = sec->SecurityId; 
m_pSet->m_Security_Name = sec->SecurityName; 
m_pSet->m_Security_Type_Id = sec->SecurityTypeStringToInt(); 
if (!m_pSet->Update()) 
{ 
    AfxMessageBox(_T("Record not updated; no field values were set.")); 
} 
+0

您需要提交 – Ben

回答

0

在我與OracleSQL Server經驗存在的方式commit陳述發生差異。您所看到的行爲意味着Update未隱式提交。

Oracle,提交是一個明確的聲明,需要在您進行一些事務後進行。

SQL Server中,默認情況下,提交是隱含的,不需要在事務之後執行。

這就是說,這個其他的其他Stack Overflow Question and Answer似乎有兩種方法在SQL Server中明確提交提交,意思是沒有提交,你可能會失去你的交易。

首先是您可以使用BEGIN TRANSACTION讓數據庫等待提交語句。從你發佈的信息看來,情況並非如此。

另一種在SQL Server中顯式聲明commit語句的方法是更改​​數據庫本身的一些設置。根據你的思路,我會檢查這裏提到的帖子中提到的設置,並確保你沒有提交隱含的提交。