c oracle 数据库连接

在现代软件开发中,大多数应用程序需要与数据库进行交互来存储和检索数据。C语言是一种强大的编程语言,然而他并不是主流的数据库应用语言。Oracle数据库是一种强大可靠的关系型数据库,具备数据可靠性和数据处理速度,企业级应用必不可少。在本文中,我们将探讨如何使用C语言来连接Oracle数据库。

使用C语言连接Oracle数据库,需要使用ODBC API。这个API可以编写使用Oracle的程序而不必了解Oracle SQL语法。接下来我们将通过一个示例程序来演示使用ODBC API连接Oracle数据库。

/* Example.c */ #include #include #include #include SQLHENV env; SQLHDBC dbc; SQLHSTMT stmt; void main() { SQLCHAR *ConnectString = "DSN=dsn;UID=user;PWD=password"; SQLCHAR *sqlstring = "Select * from EMPLOYEES"; SQLRETURN retval; retval = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); retval = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER); retval = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); retval = SQLDriverConnect(dbc, NULL, ConnectString, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE); retval = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); retval = SQLExecDirect(stmt, (SQLCHAR*)sqlstring, SQL_NTS); SQLINTEGER emp_id; SQLCHAR emp_name[30], emp_job[30]; while (SQLFetch(stmt) == SQL_SUCCESS) { SQLGetData(stmt, 1, SQL_C_SLONG, &emp_id, 0, NULL); SQLGetData(stmt, 2, SQL_C_CHAR, emp_name, 30, NULL); SQLGetData(stmt, 3, SQL_C_CHAR, emp_job, 30, NULL); printf("%d %s %s \n", emp_id, emp_name, emp_job); } SQLFreeHandle(SQL_HANDLE_STMT, stmt); SQLDisconnect(dbc); SQLFreeHandle(SQL_HANDLE_DBC, dbc); SQLFreeHandle(SQL_HANDLE_ENV, env); }