用C++操作ORACLE的例子 有没有朋友能提供C++操作ORACLE数据库的例子,ADO,ODBC等方法都行。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include "oracle.h"string UpperToLower(const string& str){}COracle::COracle(){ m_bConnection = false; m_nSentence = -1; int nPort = 0; memset(m_pCmd,0,sizeof(m_pCmd));}COracle::~COracle(){ Disconnect();}int COracle::DbInit(){ m_DbConnection = (CDbConnection *)malloc(sizeof(CDbConnection)); if(m_DbConnection == NULL)return 1; m_DbData = (CDbData *)malloc(sizeof(CDbData)); if(m_DbData == NULL)return 1; m_DbData->nTag = NOT_BIND; memset(m_DbConnection, 0, sizeof(CDbConnection)); memset(m_DbConnection->pIp,0,sizeof(m_DbConnection->pIp)); memset(m_DbConnection->pUser,0,sizeof(m_DbConnection->pUser)); memset(m_DbConnection->pSid,0,sizeof(m_DbConnection->pSid)); return 0;}void COracle::SetDbPara(const char* ip,const char* user,const char* pass,const char* sid,int port){ if(DbInit()) return; if(m_DbConnection == NULL) return; _snprintf(m_DbConnection->pIp, sizeof(m_DbConnection->pIp), "%s", ip); _snprintf(m_DbConnection->pUser, sizeof(m_DbConnection->pUser), "%s", user); _snprintf(m_DbConnection->pPass, sizeof(m_DbConnection->pPass), "%s", pass); _snprintf(m_DbConnection->pSid, sizeof(m_DbConnection->pSid), "%s", sid); m_DbConnection->nPort = port; }void COracle::SetCmd(char* pCmd){ char pKey[64]; memset(pKey,0,sizeof(pKey)); if(pCmd == NULL) return; char* pStr = pCmd; while((*pStr == 0x20 || *pStr == 0x09) && *pStr != 0x00) pStr++; char* pEnd = pStr; while((*pEnd != 0x20 && *pEnd != 0x09) && *pEnd != 0x00) pEnd++; memcpy(pKey,pStr,pEnd - pStr); string str = UpperToLower(pKey); if(str == "select") m_nSentence = SJW_SELETE; else if(str == "insert") m_nSentence = SJW_INSERT; else if(str == "delete") m_nSentence = SJW_DELETE; else if(str == "update") m_nSentence = SJW_UPDATE; else if(str == "commit") m_nSentence = SJW_COMMIT; else if(str == "rollback") m_nSentence = SJW_ROLLBACK; else { m_nSentence = -2;Sleep(10000);return; } _snprintf(m_pCmd, sizeof(m_pCmd), "%s", pCmd); }int COracle::DbConnect(){ OCIEnv *envhp; OCIError *errhp; OCISvcCtx *svchp; OCIStmt *stmthp; if(m_DbConnection==NULL) return 1; if(OCIInitialize((ub4) OCI_DEFAULT, (dvoid *)0, (dvoid * (*)(dvoid *, size_t))0, (dvoid * (*)(dvoid *, dvoid *, size_t))0, (void (*)(dvoid *, dvoid *)) 0)) return 1; if(OCIEnvInit((OCIEnv **) &envhp, OCI_DEFAULT, (size_t) 0, (dvoid **) 0)) return 1; if(OCIHandleAlloc((dvoid *) envhp, (dvoid **) &errhp, OCI_HTYPE_ERROR,(size_t) 0,(dvoid **) 0)) return 1; if(OCIHandleAlloc((dvoid *) envhp, (dvoid **)&svchp, OCI_HTYPE_SVCCTX,(size_t)NULL, (dvoid **)NULL)) { OCIHandleFree((dvoid *) errhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *) envhp, OCI_HTYPE_ENV); return 1; } if(OCILogon(envhp, errhp, &svchp, (const OraText*)m_DbConnection->pUser, strlen(m_DbConnection->pUser), (const OraText*)m_DbConnection->pPass, strlen(m_DbConnection->pPass),(const OraText*)m_DbConnection->pSid, strlen(m_DbConnection->pSid))) { OCIHandleFree((dvoid *) svchp, OCI_HTYPE_SVCCTX); OCIHandleFree((dvoid *) errhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *) envhp, OCI_HTYPE_ENV); return 1; } if(OCIHandleAlloc((dvoid *)envhp, (dvoid **)&stmthp, OCI_HTYPE_STMT,(size_t)NULL, (dvoid **)NULL)) { OCILogoff(svchp, errhp); OCIHandleFree((dvoid *) svchp, OCI_HTYPE_SVCCTX); OCIHandleFree((dvoid *) errhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *) envhp, OCI_HTYPE_ENV); return 1; } m_DbConnection->envhp = envhp; m_DbConnection->errhp = errhp; m_DbConnection->svchp = svchp; m_DbConnection->stmthp = stmthp; m_DbConnection->defhp = NULL; m_DbConnection->bindhp = NULL; return 0; }int COracle::DbExecute(){ if(m_nSentence == SJW_SELETE) { int num_col; char**buf_col; int*len_col; int i; OCIParam* colhp; OCIDefine** defhp; char tmpbuf[7][50]; memset(tmpbuf, 0, 350); if(m_DbConnection == NULL || m_pCmd == NULL || m_DbData == NULL) return 1; if(m_DbData->nTag== NOT_BIND) { num_col = 1; if(OCIStmtPrepare(m_DbConnection->stmthp, m_DbConnection->errhp, (const OraText*)m_pCmd, (ub4)strlen(m_pCmd), OCI_NTV_SYNTAX, OCI_DEFAULT) > 0) return 1; if(OCIStmtExecute(m_DbConnection->svchp, m_DbConnection->stmthp, m_DbConnection->errhp, (ub4) 0, (ub4) 0,(CONST OCISnapshot *) NULL,(OCISnapshot *) NULL, OCI_DESCRIBE_ONLY) > 0) return 1; if(OCIAttrGet(m_DbConnection->stmthp, OCI_HTYPE_STMT, &num_col, 0, OCI_ATTR_PARAM_COUNT, m_DbConnection->errhp)) return 1; if(num_col == 0) return 1; len_col = (int *)malloc(sizeof(int) * num_col); if(len_col == NULL) return 1; buf_col = (char **)malloc(sizeof(char *) * num_col); if(buf_col == NULL) return 1; defhp = (OCIDefine **)malloc(sizeof(OCIDefine *) * num_col); if(defhp == NULL) return 1; m_DbData->nNumColumn = num_col; m_DbData->nNumRow = 0; m_DbData->pBuffer = buf_col; m_DbData->pBuferLen = len_col; memset(len_col, 0, sizeof(int) * num_col); memset(buf_col, 0, sizeof(char *) * num_col); for(i=1; i<=num_col; i++) { OCIParamGet(m_DbConnection->stmthp, OCI_HTYPE_STMT, m_DbConnection->errhp, (void **)&colhp, i); OCIAttrGet(colhp, OCI_DTYPE_PARAM, (len_col+i-1), 0, OCI_ATTR_DATA_SIZE, m_DbConnection->errhp); *(len_col+i-1) = *(len_col+i-1)+1; *(buf_col+i-1) = (char *)malloc((int)(*(len_col+i-1))); if(*(buf_col+i-1) == NULL) return 1; memset(*(buf_col+i-1), 0, (int)(*(len_col+i-1))); if(OCIDefineByPos(m_DbConnection->stmthp, (defhp+i-1), m_DbConnection->errhp, i, (ub1 *)(*(buf_col+i-1)), *(len_col+i-1), SQLT_STR, NULL, (ub2 *)0, (ub2 *)0, OCI_DEFAULT)) return 1; } if (OCIStmtExecute(m_DbConnection->svchp, m_DbConnection->stmthp, m_DbConnection->errhp, (ub4) 0, (ub4) 0,(CONST OCISnapshot *) NULL,(OCISnapshot *) NULL, OCI_DEFAULT) > 0) return 1; m_DbData->nTag = ALREADY_BIND; } for(i=0; i<m_DbData->nNumColumn; i++) memset(m_DbData->pBuffer[i], 0, m_DbData->pBuferLen[i]); } else { if(OCIStmtPrepare(m_DbConnection->stmthp, m_DbConnection->errhp, (const OraText*)m_pCmd, (ub4)strlen(m_pCmd), OCI_NTV_SYNTAX, OCI_DEFAULT)) return 1; if(OCIStmtExecute(m_DbConnection->svchp, m_DbConnection->stmthp, m_DbConnection->errhp, (ub4) 1, (ub4) 0,(CONST OCISnapshot *) NULL,(OCISnapshot *) NULL, OCI_DEFAULT | OCI_COMMIT_ON_SUCCESS)) return 1; } return 0; }bool COracle::DbFetch(){ if(OCI_NO_DATA != OCIStmtFetch(m_DbConnection->stmthp, m_DbConnection->errhp, 1, OCI_FETCH_NEXT, OCI_DEFAULT)) { m_DbData->nNumRow++; return 0;} else return 1;}int COracle::DbCommit(){ if(OCITransCommit(m_DbConnection->svchp, m_DbConnection->errhp, (ub4) 0))return 1; return 0;}int COracle::Disconnect(){ DbFree();OCILogoff(m_DbConnection->svchp, m_DbConnection->errhp); OCIHandleFree((dvoid *) m_DbConnection->svchp, OCI_HTYPE_SVCCTX); OCIHandleFree((dvoid *) m_DbConnection->errhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *) m_DbConnection->envhp, OCI_HTYPE_ENV); return 0; }int COracle::DbRollBack(){ if(OCITransRollback(m_DbConnection->svchp, m_DbConnection->errhp, (ub4) 0))return 1; return 0;}int COracle::GetDbError(string& str){ sb4 uErrorCode; unsigned char acDiscription[1024] = ""; OCIErrorGet(m_DbConnection->errhp,1,NULL,&uErrorCode, acDiscription, 1024-1,OCI_HTYPE_ERROR); str = (char*)acDiscription; return uErrorCode;}string COracle::GetData(int nIndex){ string str; if(nIndex >= m_DbData->nNumColumn) return ""; return str;}int COracle::DbFree(){ int i; if(m_DbData == NULL) return 1; if(m_DbData->pBuferLen) free(m_DbData->pBuferLen); if(m_DbData->pBuffer) { for(i=0;i<m_DbData->nNumColumn;i++) { if(*(m_DbData->pBuffer+i)) free(*(m_DbData->pBuffer+i)); } free(m_DbData->pBuffer); } return 0;} 我刚写了一个oracle.h#ifndef _ORACLE_H_#define _ORACLE_H_#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <oci.h> #include <string>#include <windows.h>#include <iostream>using namespace std;#ifdef _WIN32#define snprintf _snprintf#endif#define NOT_BIND 0 #define ALREADY_BIND 1typedef struct sjw_oci { char pIp[32]; int nPort; char pUser[32]; char pPass[32]; char pSid[32]; OCIEnv *envhp; OCIError *errhp; OCIServer *srvhp; OCISvcCtx *svchp; OCISession *authp; OCIStmt *stmthp; OCIBind *bindhp; OCIParam *colhp; OCIDefine **defhp; }CDbConnection; typedef struct sjw_data { int nTag; long nNumColumn; long nNumRow; char** pBuffer; int* pBuferLen; }CDbData; enum sjw_sentence{ SJW_SELETE=0, SJW_INSERT, SJW_DELETE, SJW_UPDATE, SJW_COMMIT, SJW_ROLLBACK}; /*大写字母变小写*/string UpperToLower(const string&);class COracle{private: CDbConnection *m_DbConnection; CDbData *m_DbData; char m_pCmd[65535]; bool m_bConnection; int m_nSentence;private: int DbInit(); int DbFree();public: int DbConnect(); int DbExecute(); bool DbFetch(); int DbCommit(); int Disconnect(); int DbRollBack(); int GetDbError(string& strError); void SetDbPara(const char*,const char*,const char*,const char*,int); void SetCmd(char*); string GetData(int); COracle(); ~COracle();};#endif //_ORACLE_H__ 哥哥们谁在Release下碰到过这种编译错误啊 关于activeX控件调用的问题! [求助]在对话框上编程创建一个按钮,运行时出现Debug Assertion Failed,请求各位高手解答! Effective c++ 如何才能把EVENTMSG数据保存出来? 一个关于CDialog类中PreTranslateMessage的问题!只有5分了。。。以后补 调用SetWindowLong为什么失败? 简单的CSODKET的问题 菜鸟请教一个问题!!! 关于com组件调用问题 老问题,窗口边界问题。 svchost 安装问题,急!!
string UpperToLower(const string& str)
{
}
COracle::COracle()
{
m_bConnection = false;
m_nSentence = -1;
int nPort = 0;
memset(m_pCmd,0,sizeof(m_pCmd));
}
COracle::~COracle()
{
Disconnect();
}
int COracle::DbInit()
{
m_DbConnection = (CDbConnection *)malloc(sizeof(CDbConnection));
if(m_DbConnection == NULL)return 1;
m_DbData = (CDbData *)malloc(sizeof(CDbData));
if(m_DbData == NULL)return 1;
m_DbData->nTag = NOT_BIND;
memset(m_DbConnection, 0, sizeof(CDbConnection));
memset(m_DbConnection->pIp,0,sizeof(m_DbConnection->pIp));
memset(m_DbConnection->pUser,0,sizeof(m_DbConnection->pUser));
memset(m_DbConnection->pSid,0,sizeof(m_DbConnection->pSid));
return 0;
}
void COracle::SetDbPara(const char* ip,const char* user,const char* pass,const char* sid,int port)
{
if(DbInit()) return;
if(m_DbConnection == NULL) return;
_snprintf(m_DbConnection->pIp, sizeof(m_DbConnection->pIp), "%s", ip);
_snprintf(m_DbConnection->pUser, sizeof(m_DbConnection->pUser), "%s", user);
_snprintf(m_DbConnection->pPass, sizeof(m_DbConnection->pPass), "%s", pass);
_snprintf(m_DbConnection->pSid, sizeof(m_DbConnection->pSid), "%s", sid);
m_DbConnection->nPort = port;
}
void COracle::SetCmd(char* pCmd)
{
char pKey[64];
memset(pKey,0,sizeof(pKey));
if(pCmd == NULL) return;
char* pStr = pCmd;
while((*pStr == 0x20 || *pStr == 0x09) && *pStr != 0x00) pStr++;
char* pEnd = pStr;
while((*pEnd != 0x20 && *pEnd != 0x09) && *pEnd != 0x00) pEnd++;
memcpy(pKey,pStr,pEnd - pStr);
string str = UpperToLower(pKey);
if(str == "select") m_nSentence = SJW_SELETE;
else if(str == "insert") m_nSentence = SJW_INSERT;
else if(str == "delete") m_nSentence = SJW_DELETE;
else if(str == "update") m_nSentence = SJW_UPDATE;
else if(str == "commit") m_nSentence = SJW_COMMIT;
else if(str == "rollback") m_nSentence = SJW_ROLLBACK;
else
{
m_nSentence = -2;Sleep(10000);return;
}
_snprintf(m_pCmd, sizeof(m_pCmd), "%s", pCmd);
}
int COracle::DbConnect()
{
OCIEnv *envhp;
OCIError *errhp;
OCISvcCtx *svchp;
OCIStmt *stmthp;
if(m_DbConnection==NULL) return 1;
if(OCIInitialize((ub4) OCI_DEFAULT, (dvoid *)0, (dvoid * (*)(dvoid *, size_t))0, (dvoid * (*)(dvoid *, dvoid *, size_t))0, (void (*)(dvoid *, dvoid *)) 0))
return 1;
if(OCIEnvInit((OCIEnv **) &envhp, OCI_DEFAULT, (size_t) 0, (dvoid **) 0)) return 1;
if(OCIHandleAlloc((dvoid *) envhp, (dvoid **) &errhp, OCI_HTYPE_ERROR,(size_t) 0,(dvoid **) 0)) return 1;
if(OCIHandleAlloc((dvoid *) envhp, (dvoid **)&svchp, OCI_HTYPE_SVCCTX,(size_t)NULL, (dvoid **)NULL))
{
OCIHandleFree((dvoid *) errhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *) envhp, OCI_HTYPE_ENV); return 1;
}
if(OCILogon(envhp, errhp, &svchp, (const OraText*)m_DbConnection->pUser, strlen(m_DbConnection->pUser), (const OraText*)m_DbConnection->pPass, strlen(m_DbConnection->pPass),(const OraText*)m_DbConnection->pSid, strlen(m_DbConnection->pSid)))
{
OCIHandleFree((dvoid *) svchp, OCI_HTYPE_SVCCTX); OCIHandleFree((dvoid *) errhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *) envhp, OCI_HTYPE_ENV); return 1;
}
if(OCIHandleAlloc((dvoid *)envhp, (dvoid **)&stmthp, OCI_HTYPE_STMT,(size_t)NULL, (dvoid **)NULL))
{
OCILogoff(svchp, errhp); OCIHandleFree((dvoid *) svchp, OCI_HTYPE_SVCCTX); OCIHandleFree((dvoid *) errhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *) envhp, OCI_HTYPE_ENV); return 1;
}
m_DbConnection->envhp = envhp;
m_DbConnection->errhp = errhp;
m_DbConnection->svchp = svchp;
m_DbConnection->stmthp = stmthp;
m_DbConnection->defhp = NULL;
m_DbConnection->bindhp = NULL;
return 0;
}
int COracle::DbExecute()
{
if(m_nSentence == SJW_SELETE)
{
int num_col;
char**buf_col;
int*len_col;
int i;
OCIParam* colhp;
OCIDefine** defhp;
char tmpbuf[7][50];
memset(tmpbuf, 0, 350);
if(m_DbConnection == NULL || m_pCmd == NULL || m_DbData == NULL)
return 1;
if(m_DbData->nTag== NOT_BIND)
{
num_col = 1;
if(OCIStmtPrepare(m_DbConnection->stmthp, m_DbConnection->errhp, (const OraText*)m_pCmd, (ub4)strlen(m_pCmd), OCI_NTV_SYNTAX, OCI_DEFAULT) > 0)
return 1;
if(OCIStmtExecute(m_DbConnection->svchp, m_DbConnection->stmthp, m_DbConnection->errhp, (ub4) 0, (ub4) 0,(CONST OCISnapshot *) NULL,(OCISnapshot *) NULL, OCI_DESCRIBE_ONLY) > 0)
return 1;
if(OCIAttrGet(m_DbConnection->stmthp, OCI_HTYPE_STMT, &num_col, 0, OCI_ATTR_PARAM_COUNT, m_DbConnection->errhp))
return 1;
if(num_col == 0) return 1;
len_col = (int *)malloc(sizeof(int) * num_col);
if(len_col == NULL) return 1;
buf_col = (char **)malloc(sizeof(char *) * num_col);
if(buf_col == NULL) return 1;
defhp = (OCIDefine **)malloc(sizeof(OCIDefine *) * num_col);
if(defhp == NULL) return 1;
m_DbData->nNumColumn = num_col;
m_DbData->nNumRow = 0;
m_DbData->pBuffer = buf_col;
m_DbData->pBuferLen = len_col; memset(len_col, 0, sizeof(int) * num_col);
memset(buf_col, 0, sizeof(char *) * num_col);
for(i=1; i<=num_col; i++)
{
OCIParamGet(m_DbConnection->stmthp, OCI_HTYPE_STMT, m_DbConnection->errhp, (void **)&colhp, i);
OCIAttrGet(colhp, OCI_DTYPE_PARAM, (len_col+i-1), 0, OCI_ATTR_DATA_SIZE, m_DbConnection->errhp);
*(len_col+i-1) = *(len_col+i-1)+1;
*(buf_col+i-1) = (char *)malloc((int)(*(len_col+i-1)));
if(*(buf_col+i-1) == NULL)
return 1;
memset(*(buf_col+i-1), 0, (int)(*(len_col+i-1)));
if(OCIDefineByPos(m_DbConnection->stmthp, (defhp+i-1), m_DbConnection->errhp, i, (ub1 *)(*(buf_col+i-1)), *(len_col+i-1), SQLT_STR, NULL, (ub2 *)0, (ub2 *)0, OCI_DEFAULT))
return 1;
}
if (OCIStmtExecute(m_DbConnection->svchp, m_DbConnection->stmthp, m_DbConnection->errhp, (ub4) 0, (ub4) 0,(CONST OCISnapshot *) NULL,(OCISnapshot *) NULL, OCI_DEFAULT) > 0)
return 1;
m_DbData->nTag = ALREADY_BIND;
}
for(i=0; i<m_DbData->nNumColumn; i++) memset(m_DbData->pBuffer[i], 0, m_DbData->pBuferLen[i]);
}
else
{
if(OCIStmtPrepare(m_DbConnection->stmthp, m_DbConnection->errhp, (const OraText*)m_pCmd, (ub4)strlen(m_pCmd), OCI_NTV_SYNTAX, OCI_DEFAULT))
return 1;
if(OCIStmtExecute(m_DbConnection->svchp, m_DbConnection->stmthp, m_DbConnection->errhp, (ub4) 1, (ub4) 0,(CONST OCISnapshot *) NULL,(OCISnapshot *) NULL, OCI_DEFAULT | OCI_COMMIT_ON_SUCCESS))
return 1;
}
return 0;
}bool COracle::DbFetch()
{
if(OCI_NO_DATA != OCIStmtFetch(m_DbConnection->stmthp, m_DbConnection->errhp, 1, OCI_FETCH_NEXT, OCI_DEFAULT))
{ m_DbData->nNumRow++; return 0;}
else return 1;
}
int COracle::DbCommit()
{
if(OCITransCommit(m_DbConnection->svchp, m_DbConnection->errhp, (ub4) 0))return 1;
return 0;
}int COracle::Disconnect()
{
DbFree();OCILogoff(m_DbConnection->svchp, m_DbConnection->errhp); OCIHandleFree((dvoid *) m_DbConnection->svchp, OCI_HTYPE_SVCCTX);
OCIHandleFree((dvoid *) m_DbConnection->errhp, OCI_HTYPE_ERROR);
OCIHandleFree((dvoid *) m_DbConnection->envhp, OCI_HTYPE_ENV);
return 0;
}
int COracle::DbRollBack()
{
if(OCITransRollback(m_DbConnection->svchp, m_DbConnection->errhp, (ub4) 0))return 1;
return 0;
}
int COracle::GetDbError(string& str)
{
sb4 uErrorCode;
unsigned char acDiscription[1024] = "";
OCIErrorGet(m_DbConnection->errhp,1,NULL,&uErrorCode, acDiscription, 1024-1,OCI_HTYPE_ERROR);
str = (char*)acDiscription;
return uErrorCode;
}
string COracle::GetData(int nIndex)
{
string str;
if(nIndex >= m_DbData->nNumColumn) return "";
return str;
}int COracle::DbFree()
{
int i;
if(m_DbData == NULL) return 1;
if(m_DbData->pBuferLen) free(m_DbData->pBuferLen);
if(m_DbData->pBuffer)
{
for(i=0;i<m_DbData->nNumColumn;i++)
{
if(*(m_DbData->pBuffer+i))
free(*(m_DbData->pBuffer+i));
}
free(m_DbData->pBuffer);
}
return 0;
}
oracle.h
#ifndef _ORACLE_H_
#define _ORACLE_H_#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <oci.h> #include <string>
#include <windows.h>
#include <iostream>using namespace std;#ifdef _WIN32
#define snprintf _snprintf
#endif#define NOT_BIND 0
#define ALREADY_BIND 1typedef struct sjw_oci
{
char pIp[32];
int nPort;
char pUser[32];
char pPass[32];
char pSid[32];
OCIEnv *envhp;
OCIError *errhp;
OCIServer *srvhp;
OCISvcCtx *svchp;
OCISession *authp;
OCIStmt *stmthp;
OCIBind *bindhp;
OCIParam *colhp;
OCIDefine **defhp;
}CDbConnection; typedef struct sjw_data
{
int nTag;
long nNumColumn;
long nNumRow;
char** pBuffer;
int* pBuferLen;
}CDbData; enum sjw_sentence
{
SJW_SELETE=0,
SJW_INSERT,
SJW_DELETE,
SJW_UPDATE,
SJW_COMMIT,
SJW_ROLLBACK
};
/*
大写字母变小写
*/
string UpperToLower(const string&);class COracle
{
private:
CDbConnection *m_DbConnection;
CDbData *m_DbData;
char m_pCmd[65535];
bool m_bConnection;
int m_nSentence;
private:
int DbInit();
int DbFree();
public:
int DbConnect();
int DbExecute();
bool DbFetch();
int DbCommit();
int Disconnect();
int DbRollBack();
int GetDbError(string& strError);
void SetDbPara(const char*,const char*,const char*,const char*,int);
void SetCmd(char*);
string GetData(int);
COracle();
~COracle();
};#endif //_ORACLE_H__