达梦(DM)数据库DMODBC怎么连接数据源

MoMo 2021年6月14日13:25:57
评论
307

如何与数据源进行连接

ODBC  的连接是从数据源开始的,数据源是 ODBC 对一个特定的数据库的别称。为了

访问由数据源提供的数据,你的程序中必须首先建立和数据源之间的连接,在环境和连接句

柄正确分配之后,才能通过这些连接管理数据访问。

为了产生建立连接时必要的参数,必须完成以下的几项工作:

1. 调用 SQLAllocHandle 申请一个环境句柄;

2. 调用 SQLAllocHandle 申请一个连接句柄;

3. 创建一个数据源 DSN

4. 一个有效的用户 ID

5. 一个对应于这个用户 ID 的口令;

6. 其它的一些提供给驱动程序的参数信息。

    ODBC        ODBC                  SQLConnect 

SQLDriverConnect  SQLBrowseConnect,每个函数都有不同的参数以及不同级别的一致性,

 3.2 所示:

 3.2  连接到数据源的 ODBC 函数

函数

ODBC 版本

一致性

主要参数

SQLConnect

1.0

核心级

hdbc,数据源,用户 ID,口令

SQLDriverConnect

1.0

1 级

hdbc,窗口句柄,输入连接字符串

SQLBrowseConnect

1.0

2 级

hdbc,输入连接字符串,输出连接字符串

SQLConnect  是连接  ODBC  数据源的最基本的方法,在所有的一致性级别上都支持

SQLConnect 函数有以下参数:连接句柄、数据源名称、数据源名称长度、用户名(用户 ID)、

用  户  名  长  度  、  用  户  口  令  以  及  口  令  长  度  。  返  回  代  码  有  :  SQL_SUCCESS  ,

SQL_SUCCESS_WITH_INFO    SQL_ERROR    SQL_INVALID_HANDLE    使  

SQLConnect 函数连接数据源的代码示范如下:

sret = SQLConnect(hdbc, (SQLCHAR *)"DM", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS, (SQLCHAR

*)"SYSDBA", SQL_NTS);

if (RC_NOTSUCCESSFUL(sret)) {

/*  连接数据源失败! */

进行相应的错误处理

exit(0);

}

SQLDriverConnect  提供了比  SQLConnect  更灵活的方法来建立 ODBC  连接。它支持

下几种连接:要求更多连接参数的数据源,对话框提示用户输入所有的连接信息以及没有在

系统信息中定义的数据源。

SQLDriverConnect 提供以下的连接方法:

1. 用一个连接字符串建立一个连接,这个字符串包括建立连接的所有数据,如 DSN

一个或多个用户 ID 及其口令,以及其他的数据库所需要的连接信息;

2. 用一个并不完整的连接字符串来建立连接,使得  ODBC  驱动程序管理器来提示用

户输入所需要的连接信息;

3. 用一个没有在系统信息中登记的数据源建立连接,驱动程序自动提示用户输入连

接信息;

4. 用一个连接字符串建立连接,这个字符串在 DSN 配置文件中是确定的。

SQLDriverConnect 函数 fDriverCompletion 参数说明:

1. SQL_DRIVER_PROMPT:设置此选项用来显示一个对话框来提示用户输入连接信

息;

2. SQL_DRIVER_COMPLETE:如果函数调用中包含了足够的信息,ODBC 就进行连

接,否则弹出对话框提示用户输入连接信息,此时等同于 SQL_DRIVER_PROMPT

3. SQL_DRIVER_COMPLETE_REQUIRED:这个参数与 SQL_DRIVER_COMPLETE

参数唯一的不同是用户不能改变由函数提供的信息;

4. SQL_DRIVER_NOPROMPT:如果函数调用时有足够的信息,ODBC 就进行连接,

否则返回 SQL_ERROR

使用 SQLDriverConnect 连接数据源的代码示范如下:

SQLCHAR szConnStrIn[256] = "DSN=DM;DRIVER=DM ODBC DRIVER;

UID=SYSDBA;PWD=SYSDBA;TCP_PORT=5236";

SQLCHAR szConnStrOut[256];

SQLSMALLINT cbConnStrOut;

sret  =  SQLDriverConnect(hdbc,  NULL,  szConnStrIn,  SQL_NTS,  szConnStrOut,  256,  &cbConnStrOut,

SQL_DRIVER_NOPROMPT);

if (RC_NOTSUCCESSFUL(sret)) {

/*  连接数据源失败! */

进行相应的错误处理

exit(0);

}

SQLBrowseConnect 函数与 SQLDriverConnect 函数相似,但是调用 SQLBrowseConnect

函数时,程序在运行时可以再形成一个连接字符串,使用这个函数可以用一个交互的方式来

决定连接到数据源时所需要的一些信息。

使用 SQLBrowseConnect 函数连接数据源的代码示范如下:

SQLCHAR szConnStrIn[256] = "";

SQLCHAR szConnStrOut[256];

SQLSMALLINT cbConnStrOut;

strcpy(szConnStrIn, "DRIVER=DM ODBC DRIVER");

sret = SQLBrowseConnect(hdbc, szConnStrIn, SQL_NTS, szConnStrOut, 256, &cbConnStrOut);

if (sret != SQL_NEED_DATA) {

/*  连接数据源失败! */

…进行相应的错误处理…

exit(0);

}

strcpy(szConnStrIn, "SERVER=127.0.0.1;TCP_PORT=5236");//TCP_PORT=5236 可选

sret = SQLBrowseConnect(hdbc, szConnStrIn, SQL_NTS, szConnStrOut, 256, &cbConnStrOut);

if (sret != SQL_NEED_DATA) {

/*  连接数据源失败! */

…进行相应的错误处理…

exit(0);

}

strcpy(szConnStrIn, "UID=SYSDBA;PWD=SYSDBA;");

sret = SQLBrowseConnect(hdbc, szConnStrIn, SQL_NTS, szConnStrOut, 256, &cbConnStrOut);

if (sret != SQL_SUCCESS) {

/*  连接数据源失败! */

…进行相应的错误处理…

exit(0);

}

/*连接成功*/


https://xpanx.com/
MoMo
  • 本文由 发表于 2021年6月14日13:25:57
  • 转载请务必保留本文链接:https://xpanx.com/2907.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: