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.
3. **头文件(如: sql.h, sqlext.h)**: 这些头文件包含了ODBC函数的声明,供开发人员在编写连接到DB2的C或C++代码时引用。 4. **配置文件(如: db2cli.ini, sqldbcfg.ini)**: 这些配置文件用于定义数据源(DSN, ...
DB2 CLI(Call Level Interface)是IBM DB2数据库系统提供的一种编程接口,允许开发者在C或C++等语言中编写应用程序,直接调用数据库功能。它支持多种平台,包括Linux、UNIX和Windows。 #### 2. DB2 CLI与ODBC对比 ...
2. **连接到数据库**:通过使用`CONNECT`语句或其他相关函数,应用程序与DB2数据库建立连接。 3. **执行一个或多个事务**:事务是一系列逻辑相关的数据库操作,这些操作作为一个整体被提交或回滚。在DB2中,事务通常...
IBM DB2 驱动是连接到DB2数据库的关键,对于32位Windows系统,clidriver提供了CLI接口供C和C++开发者使用。安装和配置好驱动后,可以通过多种编程语言实现与DB2的高效交互。对于更详细的使用和配置指导,可以参考...
在Java环境下,可以使用JDBC(Java Database Connectivity)驱动,通过`Class.forName()`加载DB2的JDBC驱动,然后使用`DriverManager.getConnection()`方法建立数据库连接。在C++中,可能需要利用clidriver目录下的...
因此,许多C++库,如DB2 CLI、SQLite3、Poco::Data等,提供了更高级别的封装,使得数据库操作更加直观和安全。例如,Poco::Data库提供了一种面向对象的方式来访问数据库,简化了ODBC的使用。 4. 连接数据库的基本...
DB2 UDB支持多种应用程序开发方式,包括基于J2EE的Java编程、Microsoft的API(如ADO和ADO.NET)、C/C++与ODBC/CLI接口、Borland Delphi/Kylix框架、Linux上的开源框架(如Perl、Python和PHP)以及Web服务。...
- **句柄**:DB2 CLI使用了环境句柄、连接句柄和语句句柄来管理资源。 - **连接数据源**:通过连接句柄可以建立与一个或多个数据源的连接。 - **示例**:初始化和连接数据源的例子展示了如何创建环境句柄、连接句柄...
- CLI连接:启动命令行工具,然后使用`db2 connect to databaseName user username using password`命令连接。 - GUI连接:在IBM Data Studio中,创建新的数据库连接,填写上述的连接参数。 - API连接:在代码中...
OTL(Oracle, Odbc and DB2-CLI Template Library)是一种C++模板库,专门用于高效地访问和操控多种关系数据库系统,包括Oracle、DB2、SQL Server、Sybase、Informix、MySQL、Interbase/Firebird、PostgreSQL、...
在C++编程环境中,了解和使用CLI可以帮助程序员更高效地进行开发和调试。 在C++中,CLI主要涉及到的是.NET框架的C++/CLI(Microsoft Extensions for C++),这是一个用于编写.NET应用程序的C++方言。C++/CLI使得C++...
- **DB2 CLI (Call Level Interface)**:调用 DB2 CLI 函数来执行动态 SQL 语句。 - **JDBC API (Java Database Connectivity)**:用于 Java 应用程序的数据访问。 - **DAO/RDO/ADO (Data Access Objects/Remote ...
ODBC驱动的用途广泛,例如,它允许开发者使用支持ODBC的语言(如C++、Python、Java等)编写数据库应用程序,或者让数据库管理工具(如SQL Server Management Studio或DataGrip)连接到DB2数据库。此外,通过ODBC,...
DB2 9.1的ODBC驱动让非Java应用也能轻松连接到DB2数据库,适用于C++、Visual Basic等编程语言。 3. .NET Framework驱动: 对于.NET开发者,IBM提供了DB2 .NET Data Provider,它是一个.NET Framework兼容的驱动,...
### DB2使用经验积累 #### 一、DB2专有名词解释 - **Instance(实例)**:DB2实例是DB2数据库系统的核心组件之一,它指的是运行DB2数据库引擎的一个独立进程组。每个实例都有其自己的配置文件和一组运行参数,可以...
此外,DB2还提供了DB2 CLI(命令行接口)和DB2 JDBC驱动,便于应用程序连接和操作数据库。 **函数** DB2拥有丰富的内置函数集,涵盖了数学、字符串、日期时间、转换等多种类型。例如,`SUBSTR`用于提取字符串的一...
- **与其他主机系统集成**:DB2支持多种编程语言和开发环境,可以通过ODBC、JDBC、CLI等方式与Java、C/C++等语言进行交互,从而实现跨平台的应用程序开发。 - **注意事项**:文档还提到了使用此文档时的一些重要事项...
2. 连接到数据库:使用特定的连接语句建立与DB2服务器的连接。 3. 执行事务:事务是一组数据库操作,确保数据的一致性和完整性。一个事务可以包含多个SQL语句,直到提交(COMMIT)或回滚(ROLLBACK)。 4. 断开连接...