查用C语言操作Oracle数据库增删改查(c oracle 增删改)

使用C语言操作Oracle数据库:增删改查

Oracle是一种广泛使用的关系型数据库管理系统,它具有高度可扩展性和安全性,被广泛应用于企业级应用程序中。本文将介绍如何使用C语言连接和操作Oracle数据库,包括增加、删除、修改和查询数据。

需要安装Oracle Instant Client和ODBC驱动程序。 启动Visual Studio,选择“Visual C++”“Win32控制台应用程序”,然后在下一步中选择“Empty Project”。

1.连接Oracle数据库

在可执行文件中引用odbc32.lib和oci.lib库。然后添加以下代码:

“`c

#include

#include

#include

#include

#include

#include

#include

#include

SQLHENV envh;

SQLHDBC dbh;

SQLHSTMT stmt;

SQLRETURN retval;

// Initialize the environment handle

SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &envh);

// Set the environment attributes

SQLSetEnvAttr(envh, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);

// Allocate the connection handle

SQLAllocHandle(SQL_HANDLE_DBC, envh, &dbh);

// Connect to the database

char connstr[1024] = “DSN=ODBC_NAME;UID=USERNAME;PWD=PASSWORD;”;

SQLDriverConnect(dbh, NULL, (SQLCHAR*)connstr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);

// Allocate the statement handle

SQLAllocHandle(SQL_HANDLE_STMT, dbh, &stmt);


在上面的代码中,我们首先初始化环境句柄并设置环境属性。然后,我们使用SQLAllocHandle为连接和语句预留空间。使用SQLDriverConnect连接到Oracle数据库。

请注意,connstr字符串应该是ODBC数据源名称、用户名和密码的组合。 数据源名称是在ODBC管理器中创建的。默认情况下,ODBC管理器位于C:\Windows\System32\odbcad32.exe。

2.插入数据

使用INSERT语句将数据插入表中。 以下是一个简单的示例:

```c
char* insert_query = "INSERT INTO employees (employee_id, first_name, last_name) VALUES (456, 'John', 'Doe')";
SQLExecDirect(stmt, (SQLCHAR*)insert_query, SQL_NTS);

在上面的代码中,我们使用SQLExecDirect执行INSERT查询。SQLExecDirect执行创建的SQL查询,将其结果存储在语句句柄中。

3.更新数据

使用UPDATE语句更新数据。以下是一个示例:

“`c

char* update_query = “UPDATE employees SET first_name=’Jane’, last_name=’Doe’ WHERE employee_id=456”;

SQLExecDirect(stmt, (SQLCHAR*)update_query, SQL_NTS);


在上面的代码中,我们使用UPDATE语句将名为“John Doe”的员工名字更改为“Jane Doe”。

4.删除数据

使用DELETE语句删除数据。以下是一个示例:

```c
char* delete_query = "DELETE FROM employees WHERE employee_id=456";
SQLExecDirect(stmt, (SQLCHAR*)delete_query, SQL_NTS);

在上面的代码中,我们使用DELETE语句删除名为“Jane Doe”的员工。

5.查询数据

检索数据最常用的方法是使用SELECT语句。以下代码演示如何查询employees表中的所有记录:

“`c

char* select_query = “SELECT * FROM employees”;

SQLExecDirect(stmt, (SQLCHAR*)select_query, SQL_NTS);

SQLLEN employee_id = 0;

SQLCHAR first_name[50];

SQLCHAR last_name[50];

// Bind the result columns using SQLBindCol

SQLBindCol(stmt, 1, SQL_C_SLONG, &employee_id, sizeof(employee_id), NULL);

SQLBindCol(stmt, 2, SQL_C_CHAR, first_name, 50, NULL);

SQLBindCol(stmt, 3, SQL_C_CHAR, last_name, 50, NULL);

// Fetch the result set using SQLFetch

while (SQLFetch(stmt) == SQL_SUCCESS) {

printf(“Employee ID: %d, First Name: %s, Last Name: %s\n”, employee_id, first_name, last_name);

}


在上面的代码中,我们使用SQLBindCol将结果绑定到变量中,并使用SQLFetch检索所有行。

6.断开连接

在使用完Oracle数据库后,请断开连接并释放资源。以下代码演示如何释放资源:

```c
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
SQLDisconnect(dbh);
SQLFreeHandle(SQL_HANDLE_DBC, dbh);
SQLFreeHandle(SQL_HANDLE_ENV, envh);

在上面的代码中,我们首先释放SQL_STMT句柄,这将释放所有结果集和任何参数值。接下来,我们断开与数据库的连接,然后释放连接和环境句柄。

正如您所看到的,使用C语言连接和操作Oracle数据库并不太困难。上面的示例提供了一个基础知识,但您可以进一步扩展这些示例以满足您的需求。


数据运维技术 » 查用C语言操作Oracle数据库增删改查(c oracle 增删改)