当前位置: 首页 > ODBC > 正文

ODBC连接数据库的三种方式(ODBC手册读书笔记)

基本概念:连接字符串

连接字符串就是一个包含着用来建立连接的信息的字符串。

一个完整的连接字符串含有建立连接所需的全部信息。连接字符串是一系列用分号隔开的关键字/值对。连接字符串由以下函数使用:

    SQLDriverConnect,通过与用户交互完成。
    SQLBrowseConnect,用数据源重复完成。

SQLConnect不使用连接字符串;使用SQLConnect类似于使用带有三个确切的关键字/值对(代表数据源名称,以及可选的用户ID和口令)的连接。

SQLConnect连接

    SQLRETURNSQL_API    SQLConnect(
        SQLHDBC         ConnectionHandle,
        SQLCHAR         *ServerName,
        SQLSMALLINT     NameLength1,
        SQLCHAR         *UserName,
        SQLSMALLINT     NameLength2,
        SQLCHAR         *Authentication,
        SQLSMALLINT     NameLength3
    );

SQLConnect是最简单的连接函数。它要求一个数据源名称,并接受一个可选择的用户ID和口令。它适用于硬编码数据源名称及不要求用户ID或口令的应用程序。它还可适用于希望控制自己的“感观”,即没有用户界面的应用程序。这类应用程序可使用SQLDataSources建立一个数据源列表;提示用户提供数据源、用户ID和口令;然后调用SQLConnect。

SQLDriverConnect连接

    SQLRETURNSQL_API    SQLDriverConnect(
        SQLHDBC         hdbc,
        SQLHWND         hwnd,
        SQLCHAR         *szConnStrIn,
        SQLSMALLINT     cbConnStrIn,
        SQLCHAR         *szConnStrOut,
        SQLSMALLINT     cbConnStrOutMax,
        SQLSMALLINT     *pcbConnStrOut,
        SQLUSMALLINT    fDriverCompletion
    );

SQLDriverConnect用于使用连接字符串来与数据源连接。取代SQLConnect而使用SQLDriverConnect的原因如下:
让应用程序使用驱动程序特定的连接信息。
请求驱动程序提示用户提供连接信息。
不需指定数据源而进行连接。
SQLDriverConnect允许驱动程序在连接字符串的关键字-值对中定义一个任意的连接信息量。例如,假设驱动程序要求一个数据源名称、一个用户ID和口令代表服务器,以及一个用户ID和口令代表DBMS。

SQLDriverConnect可以提示用户提供连接信息。例如,前面所提到的客户程序可向SQLDriverConnect传送以下的连接字符串:

    DSN=XYZCorp;

然后,驱动程序可能会显示一个类似于下面的对话框,它会提示提供用户ID和口令。

SQLDriverConnect-get-userid-and-password

普通的应用程序可能会将此更推进一步,并且甚至不指定一个数据源。当SQLDriverConnect接受到一个空的连接字符串时,DriverManager显示下页所示的对话框。

SQLDriverConnect-get-all-info

当用户选定数据源后,DriverManager构建一个连接字符串指定那个数据源,并把它传给驱动程序。然后驱动程序就能提示用户提供它所需要的任何其他的信息。驱动程序提示用户的状态条件由DriverCompletion标志控制;有始终提示、必要时提示或从不提示几种选项。

SQLBrowseConnect连接

    SQLRETURNSQL_API    SQLBrowseConnect(
        SQLHDBC         hdbc,
        SQLCHAR         *szConnStrIn,
        SQLSMALLINT     cbConnStrIn,
        SQLCHAR         *szConnStrOut,
        SQLSMALLINT     cbConnStrOutMax,
        SQLSMALLINT     *pcbConnStrOut
    );

像SQLDriverConnect一样,SQLBrowseConnect也使用连接字符串。然而,若使用SQLBrowseConnect,应用程序可在运行时构造一个完整的连接字符串。这就允许应用程序进行两项工作:
建立它自己的对话框以提示给出这些信息,由此保持对其“感观”的控制。
可能分几步浏览可由特定驱动程序使用的数据源系统。例如,用户可能首先浏览服务器网络,并且在选择服务器之后,浏览驱动程序可访问的数据库的服务器。

应用程序调用SQLBrowseConnect并传送连接字符串,即浏览请求连接字符串,它指定驱动程序或数据源。驱动程序返回一个连接字符串,即浏览结果连接字符串,它包含关键字、可能值(假如该关键字接收一套不连续的值)和对用户友好的名称。应用程序用对用户友好的名称建立一个对话框,并提示用户提供值。然后,它从这些值建立一个新的浏览要求连接字符串,并用对SQLBrowseConnect的另一个调用把这些返回给驱动程序。

由于连接字符串被前后传送,驱动程序可以通过在应用程序返回原先的连接字符串时返回一个新的连接字符串,从而提供几个浏览层次。例如,第一次应用程序调用SQLBrowseConnect,驱动程序可能返回关键字提示用户提供服务器名称。当应用程序返回服务器名称时,驱动程序可能返回关键字提示用户给出一个数据库。当应用程序返回该数据库名称后,浏览过程才会完成。
在每一次SQLBrowseConnect返回新的浏览结果连接字符时,它返回作为它的返回代码。这告诉应用程序连接过程尚未结束。直到SQLBrowseConnect返回SQL_SUCCESS.

    分享到:

本文固定链接: http://klwang.info/three-way-to-connect-to-dbms-using-odbc/ | 数据库|Linux|软件开发

该日志由 klwang 于2013年09月27日发表在 ODBC 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: ODBC连接数据库的三种方式(ODBC手册读书笔记) | 数据库|Linux|软件开发
关键字:

ODBC连接数据库的三种方式(ODBC手册读书笔记):等您坐沙发呢!

发表评论

*
快捷键:Ctrl+Enter