【问题标题】:How do you save data in MFC?如何在 MFC 中保存数据?
【发布时间】:2009-12-22 08:37:59
【问题描述】:

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

我想知道的是MFC中有没有类似的机制?或者我可以使用 GetDlgItem(...).Text 然后使用这个值保存到数据库?

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

【问题讨论】:

    标签: c++ database post-commit autosave


    【解决方案1】:

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

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

    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

    【讨论】:

    • 没有数据库独立层?如果需要 ODBC 怎么办?
    【解决方案2】:

    公平地说,在 Delphi 上,这些是专门的小部件,不是普通的 GDI 文本框等,而是带有连接到数据集和表的附加数据库感知层的控件。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 1970-01-01
        • 2017-11-17
        • 2023-03-29
        • 2019-02-09
        • 2019-12-17
        • 1970-01-01
        相关资源
        最近更新 更多