如何创建 Microsoft Access 数据库的.mdb 文件

文章翻译 文章翻译
文章编号: 118609 - 查看本文应用于的产品
展开全部 | 关闭全部

概要

注: 有关如何以编程方式创建.mdb 文件的信息使用 Visual c + + 版本 4.x 或更高版本,请参阅 Microsoft 知识库中下面的文章:
126606信息: 访问 CREATE_DB、 REPAIR_DB 和 COMPACT_DB
.mdb 文件始终需要来配置 Microsoft Access 的数据源,通过使用开放式数据库连接(ODBC) (ODBC) 管理员或通过编程方式配置数据源。通过使用 MFC 数据库类或 ODBC 应用程序编程接口 (API),不能创建.mdb 文件。

您可以使用下列方法之一来配置您的计算机上的数据源的应用程序:

  • 提供并安装.mdb 文件随同应用程序。
  • 使.mdb 文件转换为用户定义的资源。在运行时,然后,将.mdb 文件复制。
本文讨论了使.mdb 文件转换为用户的定义资源在第二种方法。

更多信息

使用用户定义的资源,可以将杂项数据附加到.exe 文件。如果进行了.mdb 文件转换为资源,可在运行时加载该资源,并将其写入到.mdb 文件中。若要执行此操作所需步骤如下所示:

  1. 通过使用 Microsoft Access 或 MSQuery 创建.mdb 文件。
  2. 通过将以下行添加到您的.rc 文件作为用户定义的资源创建.mdb 文件:
          mdb_file  MDB_RESOURCE filename.mdb
    						
    位置:
          mdb_file      is  a name for identifying the resource.
          MDB_RESOURCE  is  a name for identifying the type of the resource
                            and can be any user-defined type.
          filename.mdb  is  the name of the .mdb file.
    						
  3. 加载资源,并将其写到.mdb 文件。您可以使用下面的函数从任意位置在您的应用程序中创建.mdb 文件。(用于创建.mdb 文件的典型位置将是 CWinApp::InitInstance() 函数的重写)。
       CreateMDBFile()
       {
          // Get the instance handle - required for loading the resource
          HINSTANCE hInst = AfxGetInstanceHandle();
    
          // Load the user-defined resource.
          HRSRC hmdbFile = ::FindResource(hInst, "mdb_file", "MDB_RESOURCE");
             HGLOBAL hRes = ::LoadResource(hInst, hmdbFile);
             DWORD dwResSize = ::SizeofResource(hInst, hmdbFile);
    
             if (hRes != NULL)
             {
                UINT FAR* lpnRes = (UINT FAR*)::LockResource(hRes);
                CString szFileName = "Filename.mdb";
    
                TRY
                {
                   // Create the .mdb file
                   CFile f( szFileName, CFile::modeCreate | CFile::modeWrite );
    
                   // Write the user-defined resource to the .mdb file
                   f.WriteHuge(lpnRes, dwResSize);
                   f.Flush();
                }
                CATCH( CFileException, e )
                {
          #ifdef _DEBUG
                 afxDump << "File could not be opened " << e->m_cause << "\n";
          #endif
                }
                END_CATCH
    
          #ifndef WIN32 //Unlock Resource is obsolete in the Win32 API
                ::UnlockResource(hRes);
          #endif
                ::FreeResource(hRes);
             }
          }
    						
此方法的一个缺点是它增加了.mdb 文件的大小根据该.exe 文件的大小。因为即使是空的.mdb 文件大小为 64k,.exe 增加至少 64k。若要减小.exe 值的一种方法是将存储到.exe 上一个压缩的.mdb 文件并将其展开在运行时存储资源的时间。

参考

有关自定义资源的详细信息,请参阅 Windows SDK 帮助。

有关以编程方式配置数据源的其他信息,请参阅 Microsoft 知识库中下面的文章:
110507如何配置在即时上的 ODBC 数据源

110508如何创建表与基础数据库类

属性

文章编号: 118609 - 最后修改: 2006年11月21日 - 修订: 3.2
这篇文章中的信息适用于:
  • Microsoft Foundation Class Library 4.2?当用于
    • Microsoft Visual C++ 1.5 专业版
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 专业版
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
关键字:?
kbmt kbdatabase kbhowto kbprogramming KB118609 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 118609
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com