数据源:管理连接 (ODBC)

本主题适用于 MFC ODBC 类。

本主题介绍:

连接到数据源意味着与 DBMS 建立通信以访问数据。 通过 ODBC 驱动程序从应用程序连接到数据源时,驱动程序会在本地或通过网络为你建立连接。

你可连接到为其设置了 ODBC 驱动程序的任何数据源。 应用程序用户还必须具有用于数据源的相同 ODBC 驱动程序。 有关重新分发 ODBC 驱动程序的详细信息,请参阅为客户重新分发 ODBC 组件

配置数据源

ODBC 管理器用于配置数据源。 还可在安装后使用 ODBC 管理器添加或删除数据源。 创建应用程序时,可将用户定向到 ODBC 管理器以让他们添加数据源,也可通过直接调用 ODBC 安装将此功能内置到应用程序中。 有关详细信息,请参阅 ODBC 管理器

可使用 Excel 文件作为数据源,并且需要配置该文件以使其注册并显示在“选择数据源”对话框中

将 Excel 文件用作数据源

  1. 使用 ODBC 数据源管理器配置文件。

  2. 在“文件 DSN”选项卡上单击“添加”

  3. 在“新建数据源”对话框中,选择 Excel 驱动程序,然后单击“下一步”

  4. 单击“浏览”,然后选择要用作日期源的文件的名称

注意

可能需要在下拉菜单中选择“所有文件”才能查看 .xls 文件

  1. 单击“下一步” ,然后单击“完成” 。

  2. 在“ODBC Microsoft Excel 安装程序”对话框中,选择数据库版本和工作簿

在多用户环境中工作

如果多个用户连接到一个数据源,则当你在记录集中操作数据时,这些用户可以更改数据。 同样,你所做的更改可能会影响其他用户的记录集。 有关详细信息,请参阅记录集:记录集如何更新记录 (ODBC)事务 (ODBC)

将连接字符串通用化

向导使用默认连接字符串与数据源建立连接。 在开发应用程序时,可使用此连接来查看表和列。 但如果用户通过应用程序连接到数据源,则此默认连接字符串可能不适合。 例如,他们的数据源及其位置的路径可能与开发应用程序时使用的不同。 在这种情况下,应该以更通用的方式重新实现 CRecordset::GetDefaultConnect 成员函数,并放弃向导实现。 例如,使用下述方法之一:

  • 使用 ODBC 管理器注册和管理连接字符串。

  • 编辑连接字符串并删除数据源名称。 框架提供 ODBC 作为数据源;在运行时,ODBC 会显示一个对话框,要求提供数据源名称和任何其他必需的连接信息。

  • 只提供数据源名称。 ODBC 要求提供用户 ID 和密码(如果需要)。 例如,在通用化之前,连接字符串如下所示:

    CString CApp1Set::GetDefaultConnect()
    {
       return "ODBC;DSN=afx;Trusted_Connection=Yes;";
    }
    

    此连接字符串指定信任连接,该连接使用 Windows NT 集成安全性。 应避免对密码进行硬编码或指定空白密码,因为这样做会造成重大安全漏洞。 可以改为对 GetDefaultConnect 提供新的连接字符串,以便它查询用户 ID 和密码。

    // User must select data source and supply user ID and password:
        return "ODBC;";
    // User ID and password required:
        return "ODBC;DSN=mydb;";
    // Password required (myuserid must be replaced with a valid user ID):
        return "ODBC;DSN=mydb;UID=myuserid;";
    // Hard-coded user ID and password (SECURITY WEAKNESS--AVOID):
        return "ODBC;DSN=mydb;UID=sa;PWD=777;";
    

连接到特定数据源

要连接到特定数据源,数据源必须已使用 ODBC 管理器进行了配置。

连接到特定数据源

  1. 构造一个 CDatabase 对象。

  2. 调用其 OpenExOpen 成员函数。

有关如何指定除使用向导指定的数据源以外的数据源的详细信息,请参阅 MFC 参考中的 CDatabase::OpenExCDatabase::Open

与数据源断开连接

调用 CDatabaseClose 成员函数之前,必须关闭所有打开的记录集。 在与要关闭的 CDatabase 对象关联的记录集中,任何挂起的 AddNewEdit 语句都将取消,并且所有挂起的事务都将回滚。

与数据源断开连接

  1. 调用 CDatabase 对象的 Close 成员函数。

  2. 销毁对象,除非需要重用该对象。

重用 CDatabase 对象

可在断开与 CDatabase 对象的连接后重用该对象,无论是使用它重新连接到同一数据源还是连接到其他数据源。

重用 CDatabase 对象

  1. 关闭对象的原始连接。

  2. 再次调用对象的 OpenExOpen 成员函数,而不是销毁该对象。

另请参阅

数据源 (ODBC)
数据源:确定数据源的架构 (ODBC)
CRecordset 类