int main()
{
OCISvcCtx *pSvcCtx = NULL;
OCIStmt *pStmt = NULL;
OCIEnv *pEnv = NULL;
OCIError *pErr = NULL;
OCIDefine *pDef = NULL;
OCIDate *date = NULL;
char *sql = "SELECT * FROM T_USER";
sword retVal;
OCIInitialize((ub4) OCI_DEFAULT, (dvoid *) 0,
(dvoid * (*)(dvoid *, size_t)) 0,
(dvoid * (*)(dvoid *, dvoid *, size_t)) 0,
(void (*)(dvoid *, dvoid *)) 0);
OCIEnvCreate(&pEnv, (ub4) OCI_DEFAULT, (dvoid *) 0,
(dvoid * (*)(dvoid *, size_t)) 0,
(dvoid * (*)(dvoid *, dvoid *, size_t)) 0,
(void (*)(dvoid *, dvoid *)) 0,
(size_t) 0, (dvoid **) 0);
OCIHandleAlloc((dvoid *) pEnv, (dvoid **) &pErr,
OCI_HTYPE_ERROR, (size_t) 0, (dvoid **) 0);
OCIHandleAlloc((dvoid *) pEnv, (dvoid **) &pSvcCtx,
OCI_HTYPE_SVCCTX, (size_t) 0, (dvoid **) 0);
OCIHandleAlloc((dvoid *) pEnv, (dvoid **) &pStmt,
OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0);
OCILogon2(pSvcCtx, pErr, &pSvcCtx, (OraText *)"username",
strlen("username"), (OraText *)"password",
strlen("password"), (OraText *)"database",
strlen("database"), OCI_DEFAULT);
OCIStmtPrepare(pStmt, pErr, (OraText *) sql, strlen(sql),
OCI_NTV_SYNTAX, OCI_DEFAULT);
OCIStmtExecute(pSvcCtx, pStmt, pErr, (ub4) 0, (ub4) 0,
(OCISnapshot *) NULL, (OCISnapshot *) NULL, OCI_DEFAULT);
ub2 colCount;
OCIAttrGet(pStmt, OCI_HTYPE_STMT, &colCount, 0, OCI_ATTR_PARAM_COUNT, pErr);
for (ub2 i = 1; i
在上面的例子中,我们首先使用OCIInitialize函数初始化OCI环境,然后使用OCIEnvCreate函数创建OCI环境句柄。接着调用OCILogon2函数连接Oracle数据库,并通过OCIStmtPrepare和OCIStmtExecute函数执行查询操作。最后,使用OCIAttrGet函数获取数据并打印到控制台。
除了使用OCI方式读取Oracle数据库外,我们还可以使用ODBC、JDBC等方式读取Oracle数据。无论使用哪种方式读取Oracle数据库,都需要了解Oracle数据库的结构和数据类型。只有深入了解Oracle数据库,才可以编写出高效的访问和操作数据的代码。
本文介绍了使用C语言读取Oracle数据的方法,通过引用OCI库的相关函数,我们能够高效地访问和操作Oracle数据库,实现各种功能。希望读者在使用C语言读取Oracle数据时能够有所收获。