DB2调用层接口(DB2 Call Level Interface简称CLI)是DB2数据库访问的基础接口。
下面例子依次执行了
示例代码:
cliTest.cpp
下面例子依次执行了
- 连接DB2数据库
- 创建操作句柄
- 查询操作
- 新增操作
- 断开连接
- 释放资源
示例代码:
cliTest.cpp
点击(此处)折叠或打开
- #include <stdio.h>
- #include <stdlib.h>
- #include <sqlcli.h>
- #include <sqlcli1.h>
- #include <sqlenv.h>
- #include <sqlda.h>
- #include <sqlca.h>
- #include <string.h>
- using namespace std;
- struct result
- {
- char ename[50];
- char cname[100];
- int ename_len;
- int cname_len;
- result()
- {
- memset(ename, '\0', sizeof(ename));
- memset(cname, '\0', sizeof(cname));
- }
- };
- int main()
- {
- SQLRETURN cliRC = SQL_SUCCESS;
- SQLHANDLE henv = SQL_NULL_HENV;
- SQLHANDLE hdbc = SQL_NULL_HDBC;
- SQLHANDLE hstmt = SQL_NULL_HSTMT;
- //获取环境句柄
- cliRC = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
- //获取连接句柄
- cliRC = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
- cliRC = SQLSetConnectAttr(hdbc,
- SQL_ATTR_AUTOCOMMIT,
- (SQLPOINTER)SQL_AUTOCOMMIT_OFF,
- SQL_IS_INTEGER);
- cliRC = SQLConnect(hdbc,
- (SQLCHAR *)"mydb",
- SQL_NTS,
- (SQLCHAR *)"user",
- SQL_NTS,
- (SQLCHAR *)"passwd",
- SQL_NTS);
- if (cliRC != SQL_SUCCESS)
- {
- cout<<"connect fail"<<endl;
- }
- //设置连接
- cliRC = SQLSetConnection(hdbc);
- //获取操作句柄
- SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
- cliRC = SQLSetStmtAttr(hstmt,
- SQL_ATTR_DEFERRED_PREPARE,
- (SQLPOINTER)SQL_DEFERRED_PREPARE_ON,
- SQL_IS_INTEGER);
- cliRC = SQLSetStmtAttr(hstmt, SQL_ATTR_BLOCK_FOR_NROWS, (SQLPOINTER)100, SQL_IS_INTEGER);
- if (cliRC == SQL_SUCCESS)
- {
- cout<<"setStmtAttr"<<endl;
- }
- //查询语句
- const char * strSQL = "select col1, col2 from table1 ";
- cliRC = SQLExecDirect(hstmt, (SQLCHAR*)strSQL, SQL_NTS);
- if (cliRC == SQL_SUCCESS)
- {
- cout<<"SQL execute successfully"<<endl;
- }
- SQLSMALLINT ulColumns = 0;
- //获取列数
- cliRC = SQLNumResultCols(hstmt, &ulColumns);
- if (cliRC == SQL_SUCCESS)
- {
- cout<<"SQLNumResultCols num="<< ulColumns<<endl;
- }
- // SQLCHAR szName[50] = "";
- // SQLSMALLINT cbNameLen = 0;
- // SQLSMALLINT iType = 0;
- // SQLUINTEGER ulColumnSize = 0;
- // SQLSMALLINT iScale = 0;
- // cliRC = SQLDescribeCol(hstmt, (SQLSMALLINT)(0 + 1), szName, 32, &cbNameLen, &iType, &ulColumnSize, &iScale, NULL);
- // if (cliRC == SQL_SUCCESS)
- // {
- // printf("SQLDescribeCol ulColumnSize=[%d]\n", ulColumnSize);
- // }
- //获取查询结果
- SQLPOINTER rgbValue;
- SQLINTEGER aaa = 0;
- SQLINTEGER *pcbValue = &aaa;
- char temp[100] = "";
- rgbValue = temp;
- struct result rst;
- cliRC = SQLBindCol(hstmt, 1, SQL_C_CHAR, rst.ename, sizeof(rst.ename), &rst.ename_len);
- cliRC = SQLBindCol(hstmt, 2, SQL_C_CHAR, rst.cname, sizeof(rst.cname), &rst.cname_len);
- while(SQLFetch(hstmt) != SQL_NO_DATA_FOUND)
- {
- cout<<"ename="<<rst.ename<<", cname="<< rst.cname<<endl;
- }
- //************************************INSERT 操作 ***************************************
- const char *insert = " insert into table1 (col1, col2) values('testcli', 'cli')";
- cliRC = SQLExecDirect(hstmt, (SQLCHAR*)insert, SQL_NTS);
- if (cliRC != SQL_SUCCESS)
- {
- printf("exec fail \n");
- }
- //成功操作行数
- SQLLEN ulRowEffected = 0;
- cliRC = SQLRowCount(hstmt, &ulRowEffected);
- cout<<"ulRowEffected = "<<ulRowEffected<<endl;
- //结束会话
- cliRC = SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_COMMIT);
- //释放资源
- cliRC = SQLFreeStmt(hstmt, SQL_UNBIND);
- cliRC = SQLFreeStmt(hstmt, SQL_CLOSE);
- return 0;
- }
相关推荐
This document describes the Oracle, Odbc and DB2-CLI Template Library, Version 4.0 (OTL 4.0). OTL 4.0 is a C++ library based on templates. It integrates all of the previous releases into one library.
Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,在MS Windows and Unix 平台下,OTL目前支持的数据库版本主要有:Oracle 7 (直接使用...
CLI
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, ...
本接口目的为不同数据库提供统一的C++访问接口,提供一组能跨平台、支持多种数据库类型、满足一般功能需求、使用简单而又不失效率的接口层,从而简化开发。该版本已经能支持的数据库有ORACLE和DB2,后续版本会支持更...
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, ...
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, ...
hisqlapi_1.0.0.9 数据库通用API C++ wrapper 这是初始版本 for windows,目前支持ODBC, ...HiSQLAPI wrapper for DB2 (CLI) HiSQLAPI wrapper for ASE (openclient) HiSQLAPI wrapper for SQL Server(ADO or OLEDB)
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, ...
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++操控关系数据库的模板库,最新版本4.0.104,参见http://otl.sourceforge.net/ 优点:a. 跨平台 b. 运行效率高,与C语言直接调用API相当 c. ...
支持DB2的CLI 支持ODBC(通过ODBC,可支持SQL SERVER,MySQL等) 跨OS平台: 标准C++语言,支持 unix/linux/windows 使用简单: 只有一个头文件 接口简洁.otl_stream, otl_connect, otl_exception等就可以完成大...
OTL 是Oracle 和 ODBC 的模板库,它屏蔽数据库操作的底层,提供数据库连接功能, C++ 流的方式完成嵌入式 SQL 语句、存储过程的执行和光标操作。 是 Oracle, Odbc and DB2-CLI Template Library 的缩写.
OTL是Oracle, ODBC and DB2-CLI Template Library的缩写,目前版本是4.0,是基于C++模板机制的C++库。 OTL 4.0 由一个C++模板框架(C++ template framework)和许多OTL适配器(OTL-adapters)组成。框架是OTL streams的...
This document describes the Oracle, ODBC and DB2-CLI Template Library, Version 4.0 (OTL 4.0). OTL 4.0 is a C++ library based on C++ templates. OTL 4.0 was designed as a combination of a C++ template ...
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持当前所有的各种主流数据库,例如Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, ...
在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+总结 [ADO.NET]由数据库触发器引发的问题 为ASP.NET封装的SQL数据库...