处理输入/输出的建议。

是否可以将基于文件的 I/O 取决于回答以下确定树的问题:

在应用程序的主数据是否位于磁盘文件?

  • 是,主要数据位于磁盘文件:

    应用程序是否读取整个文件添加到内存中打开文件和写入整个文件回磁盘文件中保存?

    • 为:这是默认 MFC 文档大小写。 使用 CDocument 序列化。

    • 否:这通常是用例基于事务的更新文件。 您更新基于每个事务基类型的文件,不需要 CDocument 序列化。

  • 不,主要数据不在磁盘文件:

    该数据是否位于 ODBC 数据源?

    • 是,该数据驻留在 ODBC 数据源:

      使用 MFC 数据库支持。 这种情况的标准 MFC 实现包括存储一 CDatabase 对象的一 CDocument 对象,如这篇文章 什么是 MFC 数据库编程模型?所述。 应用程序可以读取和写入一个附属文件 —应用程序向导的目的 “数据库视图和文件支持”选项。 在这种情况下,为附属文件会使用序列化。

    • 不,数据不在 ODBC 数据源。

      这种情况的示例:该数据驻留在 ODBC 非 DBMS;数据会通过某些其他结构读取,如 OLE 或 DDE。

      在这种情况下,不使用序列化,因此,您的应用程序没有打开并不保存菜单项。 如同 MFC ODBC 应用程序使用文档存储 CRecordset 对象,您仍可能想要使用 CDocument 作为本垒。 ,但不会使用结构中打开的默认文件/保存文档序列化。

若要支持打开,保存并保存为 " 文件 " 菜单上的命令,框架提供文档序列化。 序列化读取和写入数据,包括从类派生的对象 CObject,对永久存储区,通常磁盘文件。 序列化易于使用并提供了许多您的需要,服务,但可能不适当的大多数数据访问应用程序。 数据访问应用程序通常更新基于每个事务基类型的数据。 这些更新该事务的直接影响的记录而不是读取和写入整个数据文件。

有关序列化的信息,请参见 序列化

请参见

概念

序列化:序列化与数据库输入/输出