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

注释

自联机文档中首次包含此说明以来,尚未更新以下技术说明。 因此,某些过程和主题可能过期或不正确。 有关最新信息,建议在在线文档索引中搜索您感兴趣的主题。

使用 MFC 数据库类的应用程序将需要安装 ODBC 组件的安装程序。 它们可能还需要 ODBC 管理程序来检索有关可用驱动程序的信息,以指定默认驱动程序和配置数据源。 此说明介绍了如何使用 ODBC Installer 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 ,该 DLL 将安装 ODBC 驱动程序管理器、ODBC 驱动程序和任何必需的翻译器。 然后,它会在 ODBCINST.INI 文件(或在 NT 上的注册表中)记录已安装的驱动程序和翻译器。 SQLInstallODBC 需要 ODBC.INF 文件的完整路径,该文件包含要安装的驱动程序列表,并描述构成每个驱动程序的文件。 它还包含有关驱动程序管理器和翻译的类似信息。 ODBC。INF 文件通常由驱动程序开发人员提供。

程序还可以安装单个 ODBC 组件。 若要安装驱动程序管理器,程序首先在安装程序 DLL 中调用 SQLInstallDriverManager 以获取驱动程序管理器的目标目录。 这通常是 Windows DLL 所在的目录。 然后,该程序使用 ODBC 的 [ODBC 驱动程序管理器] 部分中的信息。INF 文件,用于将驱动程序管理器和相关文件从安装磁盘复制到此目录。 若要安装单个驱动程序,程序首先在安装程序 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 函数参考。

另请参阅

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