c oracle 查询结果
在C语言中,对于数据库操作,常用的方式是通过ODBC驱动程序进行。而ODBC驱动程序支持的数据库种类繁多,其中包括Oracle数据库。当我们需要在C语言中查询Oracle数据库结果时,可以使用ODBC API中的SQLExecDirect函数来执行数据库查询语句,并通过SQLBindCol函数将查询结果绑定到预先分配的变量中。
以下是使用C语言中的ODBC驱动程序,查询Oracle数据库中的员工表中的所有员工记录的示例:
#include #include #include SQLHENV hEnv = SQL_NULL_HENV; SQLHDBC hDbc = SQL_NULL_HDBC; SQLHSTMT hStmt = SQL_NULL_HSTMT; SQLCHAR szConnStrOut[256] = {0}; SQLINTEGER iConnStrOut = 0; SQLCHAR szQuery[] = "SELECT * FROM EMPLOYEE"; int main() { // 初始化ODBC环境 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv); SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc); // 连接到Oracle数据库 SQLDriverConnect(hDbc, NULL, (SQLCHAR*)"DSN=ORCL;UID=USERNAME;PWD=PASSWORD;", SQL_NTS, szConnStrOut, sizeof(szConnStrOut), &iConnStrOut, SQL_DRIVER_NOPROMPT); // 执行查询语句,并将查询结果绑定到变量上 SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt); SQLExecDirect(hStmt, szQuery, SQL_NTS); while(SQLFetch(hStmt) != SQL_NO_DATA) { int iEmpID = 0, iAge = 0; char szName[256] = {0}; SQLBindCol(hStmt, 1, SQL_C_LONG, &iEmpID, 0, NULL); SQLBindCol(hStmt, 2, SQL_C_CHAR, szName, sizeof(szName), NULL); SQLBindCol(hStmt, 3, SQL_C_LONG, &iAge, 0, NULL); printf("%d %s %d\n", iEmpID, szName, iAge); } // 释放ODBC资源 SQLFreeHandle(SQL_HANDLE_STMT, hStmt); SQLDisconnect(hDbc); SQLFreeHandle(SQL_HANDLE_DBC, hDbc); SQLFreeHandle(SQL_HANDLE_ENV, hEnv); return 0; }