如何建立 Microsoft Access 資料庫的.MDB 檔

文章翻譯 文章翻譯
文章編號: 118609 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

注意: 如需有關如何以程式設計方式建立.MDB 檔資訊使用 Visual C++ 版本 4.x 或稍後,請參閱下列文 「 Microsoft 知識庫 」 中:
126606資訊: 存取 CREATE_DB、 REPAIR_DB 和 COMPACT_DB
.mdb 檔案永遠需要使用開放式資料庫連接 (ODBC) 系統管理員,或以程式設計方式設定資料來源設定 Microsoft Access 資料來源。使用 MFC 資料庫類別] 或 [ODBC 應用程式發展介面 (API) 無法建立.mdb 檔案。

您可以使用下列方法之一來擁有您電腦上設定資料來源的應用程式:

  • 運送並安裝.mdb 檔和應用程式。
  • 請.mdb 檔案到使用者定義的資源。然後,將.mdb 檔複製執行階段。
本文將告訴您,第二種方法使.mdb 檔案到使用者-定義資源。

其他相關資訊

若要將其他資料附加到.EXE 檔,您可以使用使用者定義的資源。如果.mdb 檔進行到資源,資源可以是在執行階段載入並接著寫入到.mdb 檔案。如果要執行這項操作所需執行的步驟如下所示:

  1. 藉著使用 Microsoft Access 或 MSQuery 建立.mdb 檔案。
  2. 為使用者定義的資源建立.mdb 檔案,方式.RC 檔案中加入下列這一行:
          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 被增加至少 64 K。縮小.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 Professional Edition
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
關鍵字:?
kbmt kbdatabase kbhowto kbprogramming KB118609 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:118609
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 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