db2 decfloat mysql_使用CLI访问DB2数据库

本文提供了一个C语言程序示例,通过DB2 Call Level Interface (CLI) 连接到DB2数据库并执行SQL查询。代码展示了如何设置环境、连接数据源、准备和执行SQL语句、绑定参数和获取查询结果。
摘要由CSDN通过智能技术生成

这里所说的CLI指的是DB2 Call Level Interface

代码:

#include

#include

#include

int main()

{

// Declare The Local Memory Variables

SQLHANDLE EnvHandle = 0;

SQLHANDLE ConHandle = 0;

SQLHANDLE StmtHandle = 0;

SQLRETURN RetCode = SQL_SUCCESS;

SQLCHAR SQLStmt[255];

SQLCHAR JobType[10];

SQLCHAR EmpNo[10];

SQLCHAR LastName[25];

/*-----------------------------------------------------*/

/* INITIALIZATION */

/*-----------------------------------------------------*/

// Allocate An Environment Handle

SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,

&EnvHandle);

// Set The ODBC 应用程序 Version To 3.x

if (EnvHandle != 0)

SQLSetEnvAttr(EnvHandle, SQL_ATTR_ODBC_VERSION,

(SQLPOINTER) SQL_OV_ODBC3, SQL_IS_UINTEGER);

// Allocate A Connection Handle

if (EnvHandle != 0)

SQLAllocHandle(SQL_HANDLE_DBC, EnvHandle,

&ConHandle);

// Connect To The Appropriate Data Source

if (ConHandle != 0)

RetCode = SQLConnect(ConHandle, (SQLCHAR *) "SAMPLE", /*db2样例数据库,db2sampl程序可创建它*/

SQL_NTS, (SQLCHAR *) "db2inst1", /*你的用户名*/

SQL_NTS, (SQLCHAR *) "yourpasswd", /*你的密码*/

SQL_NTS);

/*-----------------------------------------------------*/

/* TRANSACTION PROCESSING */

/*-----------------------------------------------------*/

// Allocate An SQL Statement Handle

if (ConHandle != 0 && RetCode == SQL_SUCCESS)

SQLAllocHandle(SQL_HANDLE_STMT, ConHandle,

&StmtHandle);

// Define A SELECT SQL Statement That Uses A Parameter

// Marker

strcpy((char *) SQLStmt, "SELECT empno, lastname FROM ");

strcat((char *) SQLStmt, "employee WHERE job = ?");

// Prepare The SQL Statement

RetCode = SQLPrepare(StmtHandle, SQLStmt, SQL_NTS);

// Bind The Parameter Marker Used In The SQL Statement To

// An Application Variable

RetCode = SQLBindParameter(StmtHandle, 1,

SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR,

sizeof(JobType), 0, JobType,

sizeof(JobType), NULL);

// Populate The "Bound" Application Variable

strcpy((char *) JobType, "DESIGNER");

// Execute The SQL Statement

RetCode = SQLExecute(StmtHandle);

// If The SQL Statement Executed Successfully, Retrieve

// The Results

if (RetCode == SQL_SUCCESS)

{

// Bind The Columns In The Result Data Set Returned

// To Application Variables

SQLBindCol(StmtHandle, 1, SQL_C_CHAR, (SQLPOINTER)

EmpNo, sizeof(EmpNo), NULL);

SQLBindCol(StmtHandle, 2, SQL_C_CHAR, (SQLPOINTER)

LastName, sizeof(LastName), NULL);

// While There Are Records In The Result Data Set

// Produced, Retrieve And Display Them

while (RetCode != SQL_NO_DATA)

{

RetCode = SQLFetch(StmtHandle);

if (RetCode != SQL_NO_DATA)

printf("%-8s %sn", EmpNo, LastName);

}

}

// Commit The Transaction

RetCode = SQLEndTran(SQL_HANDLE_DBC, ConHandle, SQL_COMMIT);

// Free The SQL Statement Handle

if (StmtHandle != 0)

SQLFreeHandle(SQL_HANDLE_STMT, StmtHandle);

/*-----------------------------------------------------*/

/* TERMINATION */

/*-----------------------------------------------------*/

// Terminate The Data Source Connection

if (ConHandle != 0)

RetCode = SQLDisconnect(ConHandle);

// Free The Connection Handle

if (ConHandle != 0)

SQLFreeHandle(SQL_HANDLE_DBC, ConHandle);

// Free The Environment Handle

if (EnvHandle != 0)

SQLFreeHandle(SQL_HANDLE_ENV, EnvHandle);

// Return Control To The Operating System

return(0);

}

编译运行:

$ gcc -o db2test db2test.c -I/home/db2inst1/sqllib/include -L/home/db2inst1/sqllib/lib -ldb2

$ ./db2test

000150 ADAMSONn000160 PIANKAn000170 YOSHIMURAn000180 SCOUTTENn000190 WALKERn000200 BROWNn000210 JONESn000220 LUTZn200170 YAMAMOTOn200220 JOHNn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值