如何在MFC中保存数据?

时间:2009-12-22 08:37:59

标签: c++ database post-commit autosave

我还记得在Delphi中,开发人员可以直接将UI(文本框,列表框...)直接连接到数据库,然后当用户单击按钮时,只需调用post动作,然后数据将自动保存。

我想知道的是MFC中是否有类似的机制?或者我可以使用GetDlgItem(...)。文本然后使用此值保存到数据库?

或任何其他建议将不胜感激。

3 个答案:

答案 0 :(得分:1)

在VC ++中,您必须使用 Microsoft ActiveX数据对象库(ADO类型库)。

要存储数据,您可以按照以下步骤操作:

1.Retrive data from all controls 
2.Validate the data retrived
3.Use sql query to store the data to database. 

您可以使用独立于任何数据库管理系统的 ODBC API

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

http://www.odbc.net/api/index.shtml

答案 1 :(得分:0)

为了公平对待Delphi,这些是专门的小部件,而不是普通的GDI文本框等,但是具有连接到数据集和表的附加数据库感知层的控件。

.NET也有类似的概念,不了解MFC

答案 2 :(得分:0)

MFC在Doc / View / Frame中的数据抽象是在CDocument中。保存文档时,如果文件没有保存的路径,MFC会提示用户输入文件名,然后在文件上构建CArchive并触发CDocument :: Serialize。您可以将连接字符串存储在文档类中,并使用它将数据保存在CDocument :: Serialize。

如果您有基于文件的数据库,则更容易集成。覆盖CDocument :: OnNewDocument以为文档创建新的基于文件的数据库,以及 覆盖CDocument :: OnOpenDocument以从现有数据库中读取。如果您没有基于文件的数据库,则可以使用CDocument :: SaveModified覆盖来禁止文件对话框,该覆盖将保存数据并清除已修改的标志。