查用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语句将数据插入表中。 以下是一个简单的示例:
```cchar* 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语句删除数据。以下是一个示例:
```cchar* 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数据库后,请断开连接并释放资源。以下代码演示如何释放资源:
```cSQLFreeHandle(SQL_HANDLE_STMT, stmt);
SQLDisconnect(dbh);SQLFreeHandle(SQL_HANDLE_DBC, dbh);
SQLFreeHandle(SQL_HANDLE_ENV, envh);
在上面的代码中,我们首先释放SQL_STMT句柄,这将释放所有结果集和任何参数值。接下来,我们断开与数据库的连接,然后释放连接和环境句柄。
正如您所看到的,使用C语言连接和操作Oracle数据库并不太困难。上面的示例提供了一个基础知识,但您可以进一步扩展这些示例以满足您的需求。