Share via


TN048:为 MFC 数据库应用程序编写 ODBC 安装和管理程序

注意

以下技术说明在首次包括在联机文档中后未更新。 因此,某些过程和主题可能已过时或不正确。 要获得最新信息,建议你在联机文档索引中搜索热点话题。

使用 MFC 数据库类的应用程序需要安装 ODBC 组件的安装程序。 它们还可能需要 ODBC 管理程序以检索有关可用驱动程序的信息,从而指定默认驱动程序和配置数据源。 本说明介绍如何使用 ODBC 安装程序 API 编写这些程序。

编写 ODBC 安装程序

MFC 数据库应用程序需要 ODBC 驱动程序管理器 (ODBC.DLL) 和 ODBC 驱动程序才能访问数据源。 许多 ODBC 驱动程序还需要额外的网络和通信 DLL。 大多数 ODBC 驱动程序会附带可安装所需 ODBC 组件的安装程序。 使用 MFC 数据库类的应用程序开发人员可以:

  • 依靠特定于驱动程序的安装程序来安装 ODBC 组件。 这不需要开发人员进行更多工作 — 你可以只是重新分发驱动程序的安装程序。

  • 或者,你可以编写自己的安装程序以安装驱动程序管理器和驱动程序。

ODBC 安装程序 API 可用于编写特定于应用程序的安装程序。 安装程序 API 中的函数由 ODBC 安装程序 DLL(在 16 位 Windows 上为 ODBCINST.DLL,在 Win32 上为 ODBCCP32.DLL)实现。 应用程序可以在安装程序 DLL 中调用 SQLInstallODBC,它会安装 ODBC 驱动程序管理器、ODBC 驱动程序以及任何必需的转换器。 它随后会在 ODBCINST.INI 文件(在 NT 上是注册表)中记录已安装的驱动程序和转换器。 SQLInstallODBC 需要 ODBC.INF 文件的完整路径,该文件包含要安装的驱动程序列表并描述构成每个驱动程序的文件。 它还包含有关驱动程序管理器和转换器的类似信息。 ODBC.INF 文件通常由驱动程序开发人员提供。

程序还可以安装各个 ODBC 组件。 若要安装驱动程序管理器,程序会首先在安装程序 DLL 中调用 SQLInstallDriverManager,以获取驱动程序管理器的目标目录。 这通常是 Windows DLL 所在的目录。 程序随后使用 ODBC.INF 文件的 [ODBC Driver Manager] 部分中的信息将驱动程序管理器和相关文件从安装磁盘复制到此目录。 若要安装单个驱动程序,程序会首先在安装程序 DLL 中调用 SQLInstallDriver以将驱动程序规范添加到 ODBCINST.INI 文件(在 NT 上是注册表)。 SQLInstallDriver 会返回驱动程序的目标目录(通常是 Windows DLL 所在的目录)。 程序随后使用 ODBC.INF 文件的驱动程序部分中的信息将驱动程序 DLL 和相关文件从安装磁盘复制到此目录。

有关 ODBC.INF、ODBCINST.INI 和使用安装程序 API 的详细信息,请参阅 ODBC SDK 程序员参考的第 19 章“安装 ODBC 软件”

编写 ODBC 管理员

MFC 数据库应用程序可以按如下所示,通过两种方式之一设置和配置 ODBC 数据源:

  • 使用 ODBC 管理员(可用作程序或控制面板项)。

  • 创建自己的程序以配置数据源。

配置数据源的程序会对安装程序 DLL 进行函数调用。 安装程序 DLL 会调用设置 DLL 以配置数据源。 每个驱动程序都有一个设置 DLL;它可能是驱动程序 DLL 本身,也可能是单独的 DLL。 设置 DLL 会提示用户输入驱动程序连接到数据源和默认转换器(如果受支持)所需的信息。 它随后会调用安装程序 DLL 和 Windows API,以在 ODBC.INI 文件(或注册表)中记录此信息。

若要显示用户可以用于添加、修改和删除数据源的对话框,程序会在安装程序 DLL 中调用 SQLManageDataSources。 从控制面板调用安装程序 DLL 时会调用此函数。 若要添加、修改或删除数据源,SQLManageDataSources 会在与该数据源关联的驱动程序的设置 DLL 中调用 ConfigDSN。 若要直接添加、修改或删除数据源,程序会在安装程序 DLL 中调用 SQLConfigDataSource。 程序会传递数据源的名称和用于指定要执行的操作的选项。 SQLConfigDataSource 会在设置 DLL 中调用 ConfigDSN 并向它传递来自 SQLConfigDataSource 的参数。

有关详细信息,请参阅 ODBC SDK 程序员参考的第 23 章“设置 DLL 函数参考”和第 24 章“安装程序 DLL 函数参考”

另请参阅

按编号列出的技术说明
按类别列出的技术说明