如何设置 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.

要获取的 DSN 信息到 ODBC.INI 和 ODBCINST.INI 的四种方法

.INI 文件存储有关 ODBC 驱动程序和 ODBC 数据源的信息。如此一来他们是变量--用户可能已经安装了这些 \WINDOWS 目录中一次。如果开发人员能够盲目地复制到用户的计算机上的 ODBC.INI 和 ODBCINST.INI,新的文件可能会覆盖现有数据源。

以下是您可以使用进入用户的 ODBC.INI 和 ODBCINST.INI 文件 DSN 信息的四种方法。

ODBC 安装

要安装的 ODBC 驱动程序,并建立 ODBC 数据源 Visual Basic 的联机帮助文档建议您将 \VB\ODBC 目录中的全部内容复制到一个附加的通讯组的磁盘。

作为一名开发人员可以指定插入磁盘,并从软盘运行 SETUP.EXE。此外,您可以提示用户插入 ODBC 软盘,然后使用 Visual Basic Shell 命令外壳到 SETUP.EXE。

设置向导中复制并修改到 SETUP1A.MAK SETUP1.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. 在 SETUP1A.MAK 中打开该项目 \VB\SETUPKIT\SETUP1 (ALT、 F、 O)。
  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 语句包含以下部分:

  • DSN: 该 OpenDatabase 中使用的是名称的字符串表达式正常工作,是指数据源有关的描述性信息块。例如对于如果数据源为 ODBC 远程数据库,它将该服务器的名称。
  • DRIVER: 是的 ODBC 驱动程序名称的字符串表达式。 这不是 ODBC 驱动程序 DLL 文件的名称。例如对于"SQL Server"或"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 Press 得到"microsoft ODBC 2.0 程序员参考和 SDK 指南"。

复制 INI

如果开发人员是某些一个 ODBC.INI 和 ODBCINST.INI 安装计算机上不存在,它们只是可以将文件复制。但是,开发人员必须确保在驱动程序路径是正确的 ; 路径是完全限定.ini 文件中。例如对于 ODBC.INI 文件将指定 C:\WINDOWS\SYSTEM\SQLSRVR.DLL 为驱动程序对于 SQL Server,因此,如果用户的 Windows 安装程序正在 \WIN31,路径将不起作用。
3.00 4.00

警告:本文已自动翻译

属性

文章 ID:123008 - 上次审阅时间:12/04/2015 10:43:52 - 修订版本: 1.2

Microsoft Visual Basic 4.0 专业版, Microsoft Visual Basic 4.0 专业版, 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

  • kbnosurvey kbarchive kbmt kbdatabase kbhowto KB123008 KbMtzh
反馈