如何設定 ODBC 資料來源,當散發應用程式

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

在此頁中

結論

本文將告訴您下列的四種方法來設定 [ODBC 資料來源的電腦上:
  • ODBC 設定
  • RegisterDatabase
  • ODBC API
  • 盲人複製的 INI 檔案

其他相關資訊

必要的檔案

如果您使用 ODBC,必須與您的應用程式散發下列檔案。使用 「 安裝精靈 」 來建立安裝磁片,請確定時必要的檔案會包含在檔案清單中。所有列出的檔案應該安裝在 \WINDOWS\SYSTEM 目錄。

選擇性的檔案 (SQL Server 或 Oracle) 是以星號 (*) 表示。
File                  Description
----------------------------------------------------------------------
ODBC.DLL              The ODBC Driver Manager. This DLL is called by the
                      Microsoft Jet database engine when performing ODBC
                      operations. The Driver Manager handles loading the
                      correct ODBC driver and dispatching ODBC function
                      calls to the driver.

ODBCINST.DLL          The ODBC Driver Installation library. This DLL
                      contains Driver installation specific functions.
                      The ODBC Administrator (ODBCADM.EXE) calls functions
                      exported from this DLL when installing ODBC
                      drivers. You may also call functions in this DLL
                      to automate driver installation.

ODBCADM.EXE           The ODBC Administrator program. This program
                      allows a user to install ODBC drivers and
                      set up or modify Data Sources.

ODBCINST.HLP          The ODBC Administrator help file.

COMMDLG.DLL           The Common Dialog DLL. This DLL is used by the
                      ODBC Administrator program.

CTL3D.DLL             The 3D Control DLL. This DLL is used by the ODBC
                      Administrator program. If you are using ODBC.DLL
                      version 1.05 or greater, you need to distribute
                      CTL3DV2.DLL.

PDSODBC.DLL           Crystal Reports Physical Server DLL for ODBC. This
                      DLL is required only if your application uses Crystal
                      Reports to access an ODBC data source.

<driver>.DLL          The ODBC driver(s) that the application will use
                      to connect to specific Data Sources.

                      SQL Server:  SQLSRVR.DLL*
                      Oracle 6:    SQORA.DLL*

<netlib>.DLL          The network library file(s). This file is used
                      to access the Data Source when using a specific
                      network protocol.

                      Named Pipes: DBNMP3.DLL*
                      TCP/IP (Sybase SQL Server): WDBNOVTC.DLL*
                      IPX/SPX (Sybase SQL Server): WDBNOVSP.DLL*
                      SQL*Net Interface: ORA6WIN.DLL*

INSTCAT.SQL*          SQL Server Catalog Stored Procedures script.

DRVSSRVR.HLP*         SQL Server ODBC Driver help file.

ORASETUP.DLL*         Oracle ODBC Driver setup functions.

DRVORACL.HLP*         Oracle ODBC Driver help file.

ORACLE.TXT*           Oracle ODBC Setup "read me" file.

ODBC.INI              Initialization file containing information
                      about specific Data Sources. The DSN parameter
                      in the Connect property of the data control or
                      the OpenDatabase statement corresponds to an
                      entry in the ODBC.INI. This file must also be
                      created or modified on the client computer.

ODBCINST.INI          The Initialization file that contains
                      information about installed ODBC drivers. The
                      RegisterDatabase statement and ODBC Administrator
                      use the information contained in this file to
                      set up Data Sources. Entries in ODBCINST.INI
                      are created either by running an ODBC driver
                      setup or through the ODBC API. This file must
                      also be either created or modified on the client
                      computer.

四種方法來取得資料來源名稱資訊到 ODBC.INI 和 ODBCINST.INI

.INI 檔會將關於 ODBC 驅動程式和 ODBC 資料來源的資訊,儲存。如此一來它們是變數--在使用者可能已經有它們安裝在 \WINDOWS 目錄中。如果開發人員已盲目地複製到使用者的電腦上的 [ODBC.INI 和 ODBCINST.INI,新的檔案可能會覆寫現有的資料來源。

以下是您可以使用 DSN 資訊進入使用者的 ODBC.INI 和 ODBCINST.INI 檔案四種方法。

ODBC 設定

安裝 ODBC 驅動程式,並建立 ODBC 資料來源,Visual Basic 線上說明文會建議您整個 \VB\ODBC 目錄的內容複製到其他的散發磁碟。

身為開發人員您可以指定插入磁片並 SETUP.EXE 執行從磁片]。在另外您可以提示使用者插入 ODBC 軟式磁片,並依照 Visual Basic 命令介面命令殼層 SETUP.EXE。

安裝精靈複製,並建立安裝磁片的程序期間會 SETUP1.MAK 修改成 SETUP1A.MAK。它會 SETUP1A.MAK 建置到 SETUP1.EXE、 壓縮它,並將其複製到安裝磁片。SETUP.EXE 分配磁碟上執行時中 SETUP.LST, 檔案會複製到目的電腦。SETUP1.EX_ 然後是未壓縮,並開始將檔案從磁碟片複製到目的電腦執行。

很可能再修改 SETUP1A.MAK、 重建 SETUP1.EXE、 壓縮它,並將它複製到安裝磁片。若要確保壓縮的檔案大小符合第一個通訊群組磁碟上,必須填補專案之前要執行 「 安裝精靈 」 中的程式碼。然後可以將程式碼變更註解,並加入新的程式碼,以提示使用者輸入 ODBC 安裝磁片。產生的 EXE 大小再仍然符合第一個通訊群組磁片上。

修改 SETUP1.FRM \VB\SETUPKIT\SETUP1 目錄加入必要的程式碼,以填補可執行檔中。在 「 安裝精靈 」 執行期間,這個檔案就會複製到 SETUP1A.MAK。

注意: Microsoft 技術支援並不支援的安裝程序或任何安裝檔案所作的修改。提供支援安裝精靈及它為基礎的 「 現況 」 只會建立的檔案。

遵循步驟如下:

  1. 啟動 Visual Basic,然後從 [檔案] 功能表選擇 [開啟專案]。開啟 SETUP1.MAK \VB\SETUPKIT\SETUP 目錄中。
  2. 從 [專案] 視窗中選取 SETUP1.FRM。請按 F7 來檢視程式碼。
  3. 結尾的 「 Form_Load 程序會加入下列程式碼中 [ExitSub: RestoreProgMan 之後及 End 陳述式之前的標籤部分,:
          Dim tmpK As String
          Dim tmpS As String
          Dim I As Long
          tmpK = "dummy"
          For I = 1 To 1000
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
             tmpS = Mid$(tmpK, 1, 2)
          Next I
  4. 儲存專案 (ALT F,V)。
  5. 執行 「 安裝精靈 」,並建立安裝磁片。
一旦建立磁碟您需要移回 Visual Basic 編輯 SETUP1A.MAK,並加入適當的程式碼,以提示使用者輸入 ODBC 安裝及安裝磁片。請依照下列步驟執行:

  1. 啟動 Visual Basic。
  2. 在 \VB\SETUPKIT\SETUP1 ALT、 F (O) 中開啟 SETUP1A.MAK 專案。
  3. 選擇 SETUP1A.FRM 並按 F7 來檢視程式碼。
  4. 在 Form_Load] 程序中放置虛設先前已以預留位置形式插入的程式碼的每一行的前面所有格符號:
          'Dim tmpK As String
          'Dim tmpS As String
          'Dim I As Long
          'tmpK = "dummy"
          'For I = 1 To 1000
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          '   tmpS = Mid$(tmpK, 1, 2)
          'Next I
  5. 加入下列程式碼,緊接著註解的程式碼在 Form_Load 程序中:
          x% = MsgBox("Do you want to install the ODBC Drivers?", 36,
             App.title)
          If x% = 6 Then
             If Not PromptForNextDisk(2, SourcePath$ + "ODBCADM.EX_") Then
                GoTo ErrorSetup
             End If
             x% = Shell(SourcePath$ &amp; "setup.exe")
          End If
  6. 將磁碟數字變更為 1 大於建立安裝磁片的總數。磁碟編號是第一個參數 PromptForNextDisk 程序。在這個範例,提示輸入的下一張磁片是 2。
  7. 儲存 SETUP1A.MAK 專案,並建立可執行檔為 SETUP1.EXE \VB\SETUPKIT\SETUP1 目錄 ALT、 F (K) 中。
  8. 殼層 MS-DOS 命令提示字元,將目錄變更到 \VB\SETUPKIT\SETUP1。在執行下列命令提示字元:
    \VB\SETUPKIT\KITFILES\COMPRESS-r SETUP1.EXE
  9. 將第一個通訊群組磁片放在適當的磁碟機],並將 SETUP1.EX_ 複製到磁片:
    複製 SETUP1.EX_ A:\SETUP1.EX_
現在,在執行安裝磁片時最後一個步驟將會提示您輸入 [ODBC 設定] 及 [安裝磁碟。會從這個磁碟執行 SETUP.EXE 並且使用者可以再安裝適當的 ODBC 驅動程式並建立必要的資料來源。您應該包含這個處理程序的指示。

如需修改 SETUP1.EXE 的相關資訊,請參閱第 25 「 發佈應用您程式 」 在 Microsoft Visual Basic 開發者快速入門] 中。

RegisterDatabase

Visual Basic 提供 RegisterDatabase 陳述式,來協助您安裝 ODBC 資料來源不驅動程式。RegisterDatabase 陳述式會假設該 ODBCINST.INI 和 ODBCINST.DLL 已經存在於電腦上。也就是執行 RegisterDatabase 之前,必須先安裝驅動程式。如果是這樣,開發人員可以使用 RegisterDatabase 加入或更新 [ODBC.INI 中的項目。

使用這個方法的問題是如果用戶端電腦沒有安裝在電腦上的 ODBC,ODBCINST.INI 和 DLL 會不存在。 而且,如果 ODBC 驅動程式是新電腦,有不會為它 ODBCINST.INI 中的項目所以 RegisterDatabase 將無法再也。

下列的描述、 語法、 備註及有關 RegisterDatabase 陳述式的範例是來自 Visual Basic 線上說明:

描述:
讓 OpenDatabase 函式來連接的 ODBC 資料來源名稱可供使用的資訊。
語法
RegisterDatabase dsn 驅動程式,無訊息屬性
備註: [RegisterDatabase 陳述式包含下列部分:

  • 資料來源名稱: 一個字串運算式,是在 [OpenDatabase 中使用的名稱函式,並參照的資料來源的描述性資訊區塊。比方說如果資料來源為 ODBC 遠端資料庫,它就是伺服器的名稱。
  • 驅動程式: 一字串運算式是 ODBC 驅動程式名稱。 這不是 ODBC 驅動程式 DLL 檔案名稱。比方說 SQL 伺服器 」 或 「 Oracle 」 是驅動程式名稱,但 SQLSRVR.DLL 」 是 DLL 檔的名稱。您必須有 ODBC 和適當的驅動程式已經安裝。
  • 無訊息: A 數值運算式是 True,如果您不想顯示 ODBC 驅動程式對話方塊該驅動程式特定的資訊] 或 [假的提示,如果您是否要顯示 ODBC 驅動程式對話方塊。如果無訊息是 True,然後屬性必須包含所有必要的驅動程式特定資訊或 [] 對話方塊便會出現仍要。
  • 屬性: 字串運算式是新增至 ODBC.INI 檔的關鍵字清單。該關鍵字是歸位分隔字串中。
範例:
      Sub Command1_Click ()
         Dim att As String
         Dim mydb As Database

         att = "Description = SQL Server on server Texas" & Chr$(13)
         att = att & "OemToAnsi=No" & Chr$(13)   ' Build keywords string.
         att = att & "Server=TEXAS" & Chr$(13)
         att = att & "Network=DBNMP3" & Chr$(13)
         att = att & "Address=\\TEXAS\PIPE\SQL\QUERY" & Chr$(13)
         att = att & "Database=Pubs" & Chr$(13)
         att = att & "LastUser=Stimpy"

         ' Update ODBC.INI.
         RegisterDatabase "Texas", "SQL Server", True, att

         Set mydb = OpenDatabase("Texas", False, False, "ODBC;")
         mydb.Close

      End Sub
如果 ODBC.INI 檔案中已註冊資料庫,項目就會更新。如果因任何原因而失敗 RegisterDatabase,不變更 ODBC.INI 檔案,並發生錯誤。

ODBC API

這是可能最有彈性且最有效率方法,但大部分的開發人員很熟悉它,而且不需 ODBC SDK 文件 API。開發人員應該取得 Microsoft 軟體開發套件 (SDK),並從 Microsoft 按下取得 [Microsoft ODBC 2.0 程式設計人員參考和 SDK 快速入門 >。

複製 INI

如果開發人員是某些安裝電腦上不存在一個 ODBC.INI 和 ODBCINST.INI、 他們只可以將檔案複製。不過,開發人員必須確認至驅動程式路徑正確,路徑是完整.INI 檔案中。比方說 ODBC.INI 檔案會指定 C:\WINDOWS\SYSTEM\SQLSRVR.DLL 為驅動程式為 SQL Server 因此如果使用者的 Windows 安裝程式在 \WIN31,路徑將不會正常運作。

屬性

文章編號: 123008 - 上次校閱: 2004年7月13日 - 版次: 1.2
這篇文章中的資訊適用於:
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 3.0 Professional Edition
關鍵字:?
kbmt kbdatabase kbhowto KB123008 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:123008
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