在现如今的大数据时代,数据存储和管理已成为一个必不可少的部分。常见的数据库管理系统有MySQL、Oracle、SQLServer等。其中,Oracle具有高可用性、高性能和高可扩展性的特点,广泛应用于企业级应用和大型系统中。本文将介绍如何在C语言中操作Oracle数据库。
一、Oracle数据库连接
需要安装Oracle的客户端和ODBC驱动。之后在代码中通过ODBC连接Oracle数据库。
“`c
/*连接Oracle数据库*/
#include
#include
#include
#include
#include
int mn()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
//分配环境句柄
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
//分配连接句柄
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
//连接数据库
retcode = SQLConnect(hdbc, (SQLCHAR*)”Oracle”, SQL_NTS, (SQLCHAR*)”system”, SQL_NTS, (SQLCHAR*)”oracle”, SQL_NTS);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
{
printf(“Connection Fled!\\n”);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return -1;
}
printf(“Connection Success!\\n”);
//释放句柄
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
二、Oracle数据库操作
连接数据库成功后,即可进行数据库操作。下面介绍如何在C语言中执行SQL语句实现数据的增删改查功能。以查询操作为例:
```c
/*查询表中所有记录*/
#include
#include
#include
#include
#include
int mn()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
SQLCHAR sqlstmt[1024];
SQLINTEGER id;
SQLCHAR name[64];
//分配环境句柄
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
//分配连接句柄
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
//连接数据库
retcode = SQLConnect(hdbc, (SQLCHAR*)\"Oracle\", SQL_NTS, (SQLCHAR*)\"system\", SQL_NTS, (SQLCHAR*)\"oracle\", SQL_NTS);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
{
printf(\"Connection Fled!\\n\");
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return -1;
}
printf(\"Connection Success!\\n\");
//分配语句句柄
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//执行查询SQL语句
sprintf((char*)sqlstmt, \"select * from emp\");
retcode = SQLExecDirect(hstmt, sqlstmt, SQL_NTS);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
{
printf(\"Query Fled!\\n\");
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return -1;
}
//获取结果集
retcode = SQLBindCol(hstmt, 1, SQL_C_LONG, &id, sizeof(id), NULL);
retcode = SQLBindCol(hstmt, 2, SQL_C_CHAR, name, sizeof(name), NULL);
while (SQLFetch(hstmt) == SQL_SUCCESS)
{
printf(\"id=%d, name=%s\\n\", id, name);
}
//释放句柄
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
以上是Oracle数据库在C语言中的使用方法,相信对很多开发人员有所帮助。