[OCI] OCI基础学习笔记:Select的方法

#include   <oci.h>      OCIEnv   *m_pOCIEnv;      OCIError   *m_pOCIError;      OCISvcCtx   *m_pOCISvcCtx;      OCIStmt   *m_Insertp;      OCIStmt   *m_pOCIStmtSelectR;      OCIBind   *m_Bndhp;  登录:     char   szUserID[STRING_LEN];      char   szPassWord[STRING_LEN];      char   szServerName[STRING_LEN];      (void) OCIEnvCreate(&m_pOCIEnv, OCI_THREADED, (dvoid *)0,                                 0, 0, 0, (size_t) 0, (dvoid **)0);     OCIHandleAlloc((dvoid   *)m_pOCIEnv,   (dvoid   **)&m_pOCIError,   OCI_HTYPE_ERROR,   (size_t)0,   (dvoid   **)0);      strcpy(szServerName,   "Ora_servername");      strcpy(szUserID,   "username");      strcpy(szPassWord,   "password");      ProcessError(m_pOCIError,          nRetCode = OCILogon(m_pOCIEnv,   m_pOCIError,   &m_pOCISvcCtx,          (unsigned   char   *)szUserID,   strlen(szUserID),          (unsigned   char   *)szPassWord   ,   strlen(szPassWord),          (unsigned   char   *)szServerName,   strlen(szServerName)          ));      if (nRetCode != OCI_SUCCESS)     {         return -1;     } 一个Select查询的初始化:     const   char   *pszSelectSql  = NULL;     pszSelectSql   =   "select OBJECT from ORIGIN WHERE HANDLE_FLAG=0 AND  rownum<5";      OCIHandleAlloc((dvoid   *)m_pOCIEnv,   (dvoid   **)&m_pOCIStmtSelectR,   OCI_HTYPE_STMT,   (size_t)0,   (dvoid   **)0);      OCIStmtPrepare(m_pOCIStmtSelectR,   m_pOCIError,   (text   *)pszSelectSql,   (ub4)strlen(pszSelectSql),              (ub4)OCI_NTV_SYNTAX,   (ub4)OCI_DEFAULT)  ;              OCIDefine *m_pOCIDefSelect = NULL;     ProcessError(m_pOCIError, OCIDefineByPos(m_pOCIStmtSelectR, &m_pOCIDefSelect, m_pOCIError, 1, (dvoid *) &lObject,                 (sword) sizeof(double), SQLT_FLT, (dvoid *) 0, (ub2 *)0,                 (ub2 *)0, OCI_DEFAULT)); 执行查询并取得记录集:     OCIStmtExecute(m_pOCISvcCtx,   m_pOCIStmtSelectR,   m_pOCIError,   (ub4)1,   (ub4)0,                     (CONST   OCISnapshot   *)NULL,   (OCISnapshot   *)NULL,   OCI_DEFAULT);     while(errno==OCI_SUCCESS_WITH_INFO || errno==OCI_SUCCESS)     {         printf("ip=%f,%s/r/n", lObject, "");         errno = OCIStmtFetch ( m_pOCIStmtSelectR, m_pOCIError, 1, OCI_FETCH_NEXT, OCI_DEFAULT);     } 原理是首先初始化OCI环境,分配表达式句柄,然后用OCIDefineByPos绑定变量,第四个参数是从1开始的查询结果对应的字段序号,最后用OCIStmtExecute执行查询,并调用OCIStmtFetch遍历结果集,没有结果会得到OCI_NO_DATA
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值