达梦(DM)数据库DMODBC应用程序开发步骤

MoMo 2021年6月14日14:57:26
评论
329

应用程序使用 ODBC 访问数据源,可以按照以下几个基本步骤进行:

1. 调用函数 SQLAllocHandle 申请环境、连接句柄,调用函数 SQLSetEnvAttr 设置环

句柄属性,调用函数   SQLSetConnectAttr   设置连接句柄属性,调用连接函数

SQLConnectSQLDriverConnect  SQLBrowseConnect 连接相关的数据源;

2. 调用函数 SQLAllocHandle 申请语句句柄,通过语句句柄应用程序可以执行 SQL 

句进行相关的 SQL 操作。调用函数 SQLPrepare  SQL 语句和操作进行准备,调

 SQLDescribeColSQLDescribeParam 等函数取得相关的描述信息,依据描述信

息调用   SQLBindColSQLBindParam   等函数绑定相关的列和参数,然后调用

SQLExecute  执行  SQL  语句,实现相关的  SQL  操作。应用程序也可以调用函数

SQLExecDirect 直接执行 SQL 语句进行相关的 SQL 操作;

3. 应用程序可以通过调用  ODBC  编目函数  SQLTablesSQLColumnsSQLStatistics

等取得数据源相关的字典信息;

4. 如果连接属性自动提交选项设置为手动提交状态,应用程序可以调用函数

SQLEndTran 来提交或回滚事务,进行相关的事务处理;

5. 调用函数 SQLFreeHandle 来释放申请的语句句柄;

6. 调用函数 SQLDisconnect 来断开应用程序与数据源之间的连接;

7. 调用函数 SQLFreeHandle 来释放申请的连接、环境句柄。

使用 ODBC 编程的基本步骤如图 3.9 所示:

达梦(DM)数据库DMODBC应用程序开发步骤

 3.9  直接使用 ODBC 函数开发应用程序的基本步骤

下面是一个调用 DM ODBC 3.0 的简单实例:

#include <windows.h>

#include <stdio.h>

#include <sql.h>

#include <sqltypes.h>

#include <sqlext.h>

/*  检测返回代码是否为成功标志,当为成功标志返回 TRUE,否则返回 FALSE */

#define RC_SUCCESSFUL(rc)   ((rc) == SQL_SUCCESS || (rc) == SQL_SUCCESS_WITH_INFO)

/*  检测返回代码是否为失败标志,当为失败标志返回 TRUE,否则返回 FALSE */

#define RC_NOTSUCCESSFUL(rc) (!(RC_SUCCESSFUL(rc)))

HENV henv; /*  环境句柄  */

HDBC hdbc; /*  连接句柄  */

HSTMT hsmt; /*  语句句柄  */

SQLRETURN sret;/*  返回代码  */

char szpersonid[11]; /*人员编号*/

SQLLEN cbpersonid=0;

char szname[51]; /*人员姓名*/

SQLLEN cbname=0;

char szphone[26]; /*联系电话*/

SQLLEN cbphone=0;

void main(void)

{

/*  申请一个环境句柄 */

SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);

/*  设置环境句柄的 ODBC 版本 */

SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3,

SQL_IS_INTEGER);

/*  申请一个连接句柄 */

SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

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

*)"SYSDBA", SQL_NTS);

/*  申请一个语句句柄 */

SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hsmt);

/*  立即执行查询人员信息的语句 */

SQLExecDirect(hsmt, (SQLCHAR *)"SELECT personid, name, phone FROM person.person;", SQL_NTS);

/*  绑定数据缓冲区 */

SQLBindCol(hsmt, 1, SQL_C_CHAR, szpersonid, sizeof(szpersonid), &cbpersonid);

SQLBindCol(hsmt, 2, SQL_C_CHAR, szname, sizeof(szname), &cbname);

SQLBindCol(hsmt, 3, SQL_C_CHAR, szphone, sizeof(szphone), &cbphone);

/*  取得数据并且打印数据  */

printf("人员编号  人员姓名  联系电话\n");

for (;;) {

sret = SQLFetchScroll(hsmt, SQL_FETCH_NEXT, 0);

if (sret == SQL_NO_DATA_FOUND)

break;

printf("%s  %s   %s\n", szpersonid, szname, szphone);

}

/*  关闭游标,终止语句执行  */

SQLCloseCursor(hsmt);

/*  释放语句句柄   */

SQLFreeHandle(SQL_HANDLE_STMT, hsmt);

/*  断开与数据源之间的连接  */

SQLDisconnect(hdbc);

/*  释放连接句柄  */

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

/*  释放环境句柄*/

SQLFreeHandle(SQL_HANDLE_ENV, henv);

}

https://xpanx.com/
MoMo
  • 本文由 发表于 2021年6月14日14:57:26
  • 转载请务必保留本文链接:https://xpanx.com/2937.html
飞书离职了怎么退出 飞书

飞书离职了怎么退出

一、功能简介 如果你是企业成员,当你被误拉入企业,或是从企业离职时,你可选择主动退出企业,也就是注销你在当前企业下的帐号。 注:退出企业后,你在该企业身份下所拥有的云文档等资源将自动流转给直属上级,无...
统信UOS怎么连接远程服务器? 统信UOS操作系统

统信UOS怎么连接远程服务器?

在终端界面中,单击  > 远程管理。 在右侧服务器列表中,单击 添加服务器。 弹出“添加服务器”窗口,自定义服务器名称,输入服务器IP地址、登录服务器的用户名及密码等。 单击 确定 将该服务器添...
匿名

发表评论

匿名网友 填写信息

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