亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tociquery.cpp

?? oci是操作oracle數(shù)據(jù)庫的接口,已對相應的接口用C++進行的封裝成類,以方便使用
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		delete[] fSqlStmt;	int nLen = strlen(inSqlstmt);	fSqlStmt = new char[nLen + 1];	if (fSqlStmt == NULL)		throw TOCIException(inSqlstmt, ERR_NOMORE_MEMORY_BE_ALLOCATED, "SetSQL()", __LINE__);	strcpy(fSqlStmt,inSqlstmt);	fSqlStmt[nLen] = '\0';		fErrorNo = OCIStmtPrepare(hStmt, hErr, (unsigned char *)fSqlStmt, strlen(fSqlStmt), OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT);	fActivated = (fErrorNo == OCI_SUCCESS);	CheckError();	fErrorNo = OCIAttrGet(hStmt, OCI_HTYPE_STMT, &(this->fStmtType),  0, OCI_ATTR_STMT_TYPE, hErr);	CheckError();	GetParamsDef();}TOCIParam *TOCIQuery::ParamByName(char *paramName){	TOCIParam *para = NULL;	bool found = false;	int i;		if (fSqlStmt == NULL)		throw TOCIException(paramName, ERR_GENERAL, "ParamByName(): sql statement is empty.");		for(i=0; i<fParamCount; i++)	{		found = CompareStrNoCase(Param(i).name,paramName);		if ( found )			break;	}	if ( found ) 		para = &paramList[i];	else 		throw TOCIException(fSqlStmt, ERR_PARAM_NOT_EXISTS, paramName);	return para;}void TOCIQuery::SetParameterNULL(char *paramName){	TOCIParam *para = ParamByName(paramName); //在ParamByName中已經(jīng)有判斷參數(shù)不存在拋出異常		para->dataType = SQLT_LNG;	fErrorNo = OCIBindByName(hStmt, &para->hBind, hErr, (text *)(para->name), //you don't have to pass any value/value length if the parameter value is null, or may raise oci success with info		-1, (ub1 *)0,(sword)0, para->dataType, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);		CheckError();}void TOCIQuery::SetParameter(char *paramName, double paramValue, bool isOutput ){	TOCIParam *para = ParamByName(paramName); //在ParamByName中已經(jīng)有判斷參數(shù)不存在拋出異常		para->fIsOutput = isOutput;	para->dataType = SQLT_FLT;	para->dblValue = paramValue;	if (isOutput)		fErrorNo = OCIBindByName(hStmt, &para->hBind, hErr, (text *)para->name,		-1,  (ub1 *)&(para->dblValue),(sb4)sizeof(para->dblValue), 		para->dataType, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);	else		fErrorNo = OCIBindByName(hStmt, &para->hBind, hErr, (text *)para->name,		strlen(para->name), (dvoid *)&(para->dblValue),(sb4)sizeof(para->dblValue), 		para->dataType, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);	CheckError();}void TOCIQuery::SetParameter(char *paramName, long paramValue, bool isOutput){	TOCIParam *para = ParamByName(paramName); //在ParamByName中已經(jīng)有判斷參數(shù)不存在拋出異常		para->fIsOutput = isOutput;	para->dataType = SQLT_INT;	para->longValue = paramValue;	if (isOutput)		fErrorNo = OCIBindByName(hStmt, &para->hBind, hErr, (text *)(para->name),		-1, (ub1 *)&(para->longValue),(sword)sizeof(para->longValue), 		para->dataType, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);	else 		fErrorNo = OCIBindByName(hStmt, &para->hBind, hErr, (text *)(para->name),		strlen(para->name), (ub1 *)&(para->longValue),(sword)sizeof(para->longValue), 		para->dataType, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);		CheckError();}void TOCIQuery::SetParameter(char *paramName, int paramValue, bool isOutput ){	TOCIParam *para = ParamByName(paramName); //在ParamByName中已經(jīng)有判斷參數(shù)不存在拋出異常		para->fIsOutput = isOutput;	para->dataType = SQLT_INT;	para->intValue = paramValue;	if (isOutput)		fErrorNo = OCIBindByName(hStmt, &para->hBind, hErr, (text *)(para->name),		-1, (ub1 *)&(para->intValue),(sword)sizeof(para->intValue), 		para->dataType, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);	else 		fErrorNo = OCIBindByName(hStmt, &para->hBind, hErr, (text *)(para->name),		strlen(para->name), (ub1 *)&(para->intValue),(sword)sizeof(para->intValue), 		para->dataType, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);		CheckError();}void TOCIQuery::SetParameter(char *paramName, char* paramValue, bool isOutput ){	TOCIParam *para = ParamByName(paramName); //在ParamByName中已經(jīng)有判斷參數(shù)不存在拋出異常		para->fIsOutput = isOutput;	para->dataType = SQLT_STR;	if (para->stringValue)		delete[] para->stringValue;	int nLen;//Modify begin version:0.0.0.8	if (isOutput)	{		nLen = MAX_STRING_VALUE_LENGTH-1; 		para->stringValue = new char[nLen+1];		para->stringValue[nLen] = '\0';	}	else 	{		if(paramValue != NULL)		{			nLen = strlen(paramValue);			para->stringValue = new char[nLen+1];			strncpy((char *)para->stringValue,paramValue,nLen);			para->stringValue[nLen] = '\0';		}		else			SetParameterNULL(paramName);	}//Modify end version:0.0.0.8		if (isOutput)		fErrorNo = OCIBindByName(hStmt, &para->hBind, hErr, (text *)(para->name),		-1,  (dvoid *)(para->stringValue),(sb4)(nLen+1), 		para->dataType, (dvoid *) &para->indicator, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *)0, OCI_DEFAULT);	else		fErrorNo = OCIBindByName(hStmt, &para->hBind, hErr, (text *)(para->name),		(sb4)strlen(para->name), (dvoid *)(para->stringValue),(sb4)(nLen+1), 		para->dataType, (dvoid *)&para->indicator, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);	CheckError();}void TOCIQuery::CheckError(){	if (fErrorNo != OCI_SUCCESS) 		throw TOCIException(fErrorNo, hErr, "Oracle OCI Call", fSqlStmt);}bool TOCIQuery::Execute(){	sb4 errcode;	text errbuf[MAX_ERRMSG_LENGTH-1];	bool exeResult = false;//Added begin at ver : 0.0.0.6#ifdef __DEBUG__    bExecuteFlag = true;#endif//Added end at ver : 0.0.0.6		if (fSqlStmt == NULL)		throw TOCIException("", ERR_GENERAL, "Execute(): sql statement is not presented");		if	(this->fStmtType == OCI_STMT_SELECT)		throw TOCIException( fSqlStmt, ERR_GENERAL, "Execute(): Can't Execute a select statement.");		fErrorNo = OCIStmtExecute(hSvc, hStmt, hErr, (ub4)1, (ub4)0, 0, 0, OCI_DEFAULT);	OCIAttrGet((dvoid*)hStmt, OCI_HTYPE_STMT, (dvoid *)&fTotalRowsFetched, (ub4 *)0, OCI_ATTR_ROW_COUNT, hErr);	nTransTimes ++;	if (fErrorNo == OCI_SUCCESS)		exeResult = true;	else if ( fErrorNo == OCI_ERROR ) //以下允許返回空參數(shù)(1405)	{		OCIErrorGet (hErr, (ub4) 1, (text *) NULL, &errcode,			errbuf, (ub4) sizeof(errbuf), (ub4) OCI_HTYPE_ERROR);		if (errcode == 1405) 			exeResult = true;		else 			CheckError();	}	else 	{			CheckError();	}		return exeResult;}void TOCIQuery::GetParamsDef(){	char *params[MAX_PARAMS_COUNT];	int i, in_literal, n, nParamLen,nFlag = 0;	char *cp,*ph;	char *sql;		int nLen = strlen(this->fSqlStmt);	sql = new char[nLen+1];	strcpy(sql, this->fSqlStmt);	sql[nLen] = '\0';	if (fParamCount>0)		delete[] paramList;	// Find and bind input variables for placeholders. 	for (i = 0, in_literal = false, cp = sql; *cp != 0; cp++)	{      if (*cp == '\'')			in_literal = ~in_literal;      if (*cp == ':' && *(cp+1) != '=' && !in_literal)      {			for ( ph = ++cp, n = 0;  *cp && (isalnum(*cp) || *cp == '_'); cp++, n++);			if(*cp == 0) 				nFlag = 1;			else 				*cp = 0;			if ( i > MAX_PARAMS_COUNT)				throw TOCIException(fSqlStmt, ERR_CAPABILITY_NOT_YET_SUPPORT, " param count execedes max numbers, please refer to OCIQuery.h");			nParamLen = strlen((char *)ph);			params[i] = new char[nParamLen+1];			strcpy(params[i],(char *)ph);			params[i][nParamLen] = '\0';			i++;			if(nFlag == 1) break;      }   	}	delete[] sql;	fParamCount = i;	if (fParamCount>0)	{		paramList = new TOCIParam[fParamCount];				for (i=0; i<fParamCount; i++)		{			nParamLen = strlen(params[i]);			paramList[i].name = new char[nParamLen+1];			strncpy(paramList[i].name, params[i], nParamLen);			paramList[i].name[nParamLen] = '\0';			delete[] params[i];		}	}}void TOCIQuery::Open(int prefetch_Row){	fPrefetchRows = prefetch_Row;	if (fOpened)	{		fCurrRow = 0;		fFetched = 0;		fCurrRow = 0;		fTotalRowsFetched = 0;	}	if (fSqlStmt == NULL)		throw TOCIException("", ERR_GENERAL, "Open(): sql statement is empty.");	if ( this->fStmtType !=OCI_STMT_SELECT)		throw TOCIException( fSqlStmt, ERR_GENERAL, "Can't open none-select statement");	GetFieldsDef();	fBof = true;	fOpened = true;}int TOCIQuery::FieldCount(){	return fFieldCount;}int TOCIQuery::ParamCount(){	return fParamCount;}TOCIField& TOCIQuery::Field(int i){	if (fSqlStmt == NULL)		throw TOCIException("", ERR_GENERAL, "Field(i): sql statement is not presented");	if ( (i>=0) && (i<fFieldCount) ) 		return fieldList[i];	else throw TOCIException(fSqlStmt , ERR_INDEX_OUT_OF_BOUND, "field index out of bound when call Field(i)");}TOCIField& TOCIQuery::Field(char *fieldName){	int i;	bool found = false;	if (fSqlStmt == NULL)		throw TOCIException("", ERR_GENERAL, "Field(*fieldName): sql statement is not presented");	if (! fOpened)		throw TOCIException(fSqlStmt, ERR_GENERAL, "can not access field before open");	for(i=0; i<fFieldCount; i++)	{		found = CompareStrNoCase(Field(i).name,fieldName);		if ( found )			break;	}	if ( found ) 		return fieldList[i];	else 		throw TOCIException(fSqlStmt, ERR_FIELD_NOT_EXISTS, fieldName);}TOCIParam& TOCIQuery::Param(int index){	if (fSqlStmt == NULL)		throw TOCIException("", ERR_GENERAL, "Param(index): sql statement is not presented");#ifdef debug	printf("param i constructor\n");#endif	if ( (index>=0) && (index<fParamCount) ) 		return paramList[index];	else		throw TOCIException(fSqlStmt , ERR_INDEX_OUT_OF_BOUND, "param index out of bound when call Param(i)");}TOCIParam& TOCIQuery::Param(char *inName){	int i;	bool found = false;	if (fSqlStmt == NULL)		throw TOCIException("", ERR_GENERAL, "Param(paramName): sql statement is not presented");		for(i=0; i<fParamCount; i++)	{		found = CompareStrNoCase(paramList[i].name,inName);		if (found)			break;	}	if ( found ) 		return paramList[i];	else		throw TOCIException(fSqlStmt, ERR_PARAM_NOT_EXISTS, (const char*)inName);}bool TOCIQuery::Next(){	int fCanFetch = 1;					//當前記錄指針的位置是否可以存取數(shù)據(jù)	int tmpFetchedAllRows;	sb4 errcode;	text errbuf[MAX_ERRMSG_LENGTH];	bool exeResult = true;	if (fSqlStmt == NULL)		throw TOCIException("", ERR_GENERAL, "Next(): sql statement is not presented");		if (!fOpened)		throw TOCIException(fSqlStmt, ERR_GENERAL, "Next(): can not access data before open it");			fCurrRow ++ ;	if( (fCurrRow == fFetched) && (fFetched < fPrefetchRows)) 		fCanFetch=0;	else if(fCurrRow==fFetched || ! fFetched)	{		fErrorNo = OCIStmtFetch(hStmt, hErr, (ub4)fPrefetchRows, (ub4) OCI_FETCH_NEXT, (ub4) OCI_DEFAULT);			tmpFetchedAllRows = fTotalRowsFetched;		fErrorNo = OCIAttrGet((dvoid*)hStmt, OCI_HTYPE_STMT, (dvoid *)&fTotalRowsFetched, (ub4 *)0, OCI_ATTR_ROW_COUNT, hErr);		fFetched = fTotalRowsFetched - tmpFetchedAllRows;		if(fFetched) 		{			fCanFetch=1;			fCurrRow=0;		}		else fCanFetch=0; 		if (fErrorNo == OCI_SUCCESS)			exeResult = true;		else if (fErrorNo == OCI_NO_DATA)			exeResult = false;		else if ( fErrorNo == OCI_ERROR ) //以下允許返回空列(1405),修正:不可以返回被截斷的列(1406)		{			OCIErrorGet (hErr, (ub4) 1, (text *) NULL, &errcode,				errbuf, (ub4) sizeof(errbuf), (ub4) OCI_HTYPE_ERROR);			if (errcode == 1405)				exeResult = true;			else CheckError();		}		else	CheckError();	}	fBof = false;	fEof = (fFetched && !fCanFetch);	return (exeResult && fCanFetch);}/****************** parameter implementation **************************/TOCIParam::TOCIParam(){	fIsOutput = false;	stringValue = NULL;	indicator = 0;	hBind = (OCIBind *) 0; }TOCIParam::~TOCIParam(){	delete[] name;	delete[] stringValue;}int TOCIParam::asInteger(){	if ( isNULL() )		intValue = 0;	if (dataType == SQLT_INT)		return intValue;	else	throw TOCIException("TOCIParam", ERR_READ_PARAM_DATA, name, "asInteger()");	}long TOCIParam::asLong(){	if ( isNULL() )		longValue = 0;		if (dataType == SQLT_LNG)		return longValue;	else	throw TOCIException("TOCIParam", ERR_READ_PARAM_DATA, name, "asLong()");	}double TOCIParam::asFloat(){	if ( isNULL() )		dblValue = 0;	if (dataType == SQLT_FLT)		return dblValue;	else	throw TOCIException("TOCIParam", ERR_READ_PARAM_DATA, name, "asFloat()");}char* TOCIParam::asString(){	if ( isNULL() )		stringValue[0] = '\0';	if (dataType == SQLT_STR)		return stringValue;	else	throw TOCIException("TOCIParam", ERR_READ_PARAM_DATA, name, "asString()");}bool TOCIParam::isNULL(){	if (! fIsOutput)		throw TOCIException("TOCIParam, not an output parameter", ERR_READ_PARAM_DATA, name, "isNULL()");	return (indicator == -1);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区二区三区蜜桃视频| 精品午夜久久福利影院| 喷水一区二区三区| 成年人午夜久久久| 欧美一区二区观看视频| 亚洲男女一区二区三区| 国产麻豆精品视频| 日韩一区二区三区电影| 亚洲亚洲人成综合网络| 成人激情免费电影网址| 精品国产乱码久久久久久夜甘婷婷| 一区二区三区欧美亚洲| 国产成人av一区二区三区在线 | 久久日一线二线三线suv| 亚洲成va人在线观看| 色综合激情久久| 国产精品久久久久三级| 国产自产视频一区二区三区| 欧美一区二区视频在线观看2020 | 亚洲地区一二三色| 成人美女视频在线观看18| 日韩一级精品视频在线观看| 亚洲精品视频在线观看网站| 成人av影视在线观看| 久久美女艺术照精彩视频福利播放| 亚洲国产成人91porn| 日本道在线观看一区二区| 国产精品卡一卡二| 99久久久久免费精品国产| 国产女人aaa级久久久级| 国产精品一区免费在线观看| 久久综合久色欧美综合狠狠| 国产呦萝稀缺另类资源| 久久你懂得1024| 国产精品18久久久久久久久久久久| 日韩视频一区在线观看| 狠狠色狠狠色综合日日91app| 欧美成人一级视频| 国产盗摄女厕一区二区三区| 久久只精品国产| 国产91清纯白嫩初高中在线观看 | 国产精品美女www爽爽爽| 国产精品资源在线| 国产精品视频你懂的| 99麻豆久久久国产精品免费| 综合激情网...| 欧美亚洲国产bt| 日韩不卡一区二区| 久久久精品日韩欧美| 国产不卡视频一区二区三区| 成人免费在线播放视频| 色婷婷综合久久久久中文| 午夜精品国产更新| 精品国产乱码久久久久久久| 成人美女视频在线看| 亚洲精品综合在线| 91精品婷婷国产综合久久性色| 理论电影国产精品| 中文字幕成人av| 91国产视频在线观看| 久久疯狂做爰流白浆xx| 中文字幕的久久| 欧美日韩你懂的| 国产美女精品在线| 亚洲蜜桃精久久久久久久| 91.麻豆视频| 国产suv精品一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 宅男在线国产精品| eeuss鲁片一区二区三区在线观看| 亚洲午夜久久久久| 国产欧美日韩不卡免费| 色综合色狠狠天天综合色| 青青草国产成人av片免费| 国产精品国产a级| 日韩精品一区二区三区蜜臀| 99视频超级精品| 国产主播一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 精品国产91九色蝌蚪| 在线观看av一区| 国产成人精品www牛牛影视| 日本中文字幕不卡| 亚洲精品综合在线| 国产日韩欧美综合一区| 欧美日韩高清在线播放| 成人黄色在线视频| 捆绑调教一区二区三区| 亚洲永久免费视频| 国产精品久久久久久久第一福利| 精品国产乱码久久久久久夜甘婷婷| 91美女片黄在线观看91美女| 精品在线你懂的| 视频精品一区二区| 亚洲一区在线观看网站| 亚洲三级久久久| 国产精品久久久久四虎| 26uuu成人网一区二区三区| 日本道免费精品一区二区三区| 粗大黑人巨茎大战欧美成人| 精品一区二区在线观看| 三级不卡在线观看| 亚洲va天堂va国产va久| 亚洲日本成人在线观看| 亚洲欧美日韩综合aⅴ视频| 国产精品国产三级国产有无不卡 | 国产精品乱人伦一区二区| 亚洲精品在线免费观看视频| 欧美一级高清大全免费观看| 欧美浪妇xxxx高跟鞋交| 欧美一a一片一级一片| 99国产精品一区| 99久久精品免费看国产免费软件| 不卡的av电影| 91亚洲国产成人精品一区二三| 风间由美一区二区三区在线观看| 国产一区不卡视频| 国产99久久久国产精品| 国产成人精品亚洲777人妖| 成人黄色一级视频| 97se亚洲国产综合在线| 久久综合久久99| 国产偷v国产偷v亚洲高清| 中文字幕不卡一区| 国产精品白丝在线| 亚洲美女少妇撒尿| 亚洲国产日韩精品| 久久精品国产99久久6| 国产在线精品一区二区夜色| 国产精品自在在线| 成人精品一区二区三区中文字幕 | 7777精品伊人久久久大香线蕉的 | 免费在线看一区| 国产精品主播直播| 91一区二区在线观看| 欧美在线制服丝袜| 日韩欧美国产高清| 国产无遮挡一区二区三区毛片日本| 国产欧美精品一区二区色综合| 亚洲欧美偷拍三级| 蜜桃精品视频在线观看| 国产一区二区三区免费在线观看 | 国产在线一区观看| 91在线视频免费观看| 欧美日韩在线不卡| 欧美电影免费观看高清完整版在线观看 | 一区二区高清视频在线观看| 日韩高清不卡一区| 成人黄色小视频| 欧美日产在线观看| 中文字幕免费不卡在线| 亚洲永久精品大片| 国产美女视频一区| 欧美日本在线播放| 欧美国产精品一区| 日本不卡一二三| av网站一区二区三区| 91麻豆精品国产91久久久使用方法| 久久人人97超碰com| 亚洲午夜电影在线| 国产91色综合久久免费分享| 欧美日韩免费电影| 亚洲色图制服诱惑| 狠狠狠色丁香婷婷综合激情| 一本一道久久a久久精品综合蜜臀| 日韩欧美亚洲国产另类| 亚洲欧美一区二区三区久本道91| 麻豆精品国产传媒mv男同| 色综合欧美在线视频区| 国产亚洲成aⅴ人片在线观看 | 国产一区二区精品久久| 欧美高清一级片在线| 中文字幕永久在线不卡| 精品亚洲porn| 欧美二区在线观看| 亚洲一区二区精品久久av| 国产成人免费在线视频| 日韩精品影音先锋| 午夜精品久久久| 欧美色涩在线第一页| 日日夜夜免费精品视频| 在线观看亚洲专区| 亚洲人123区| www.久久久久久久久| 中文字幕第一区综合| 国产乱人伦偷精品视频不卡 | 日韩中文字幕区一区有砖一区| av综合在线播放| 国产精品午夜在线| 国产高清精品网站| 精品国产一区二区三区四区四| 日日夜夜免费精品视频| 欧美精品99久久久**| 亚洲一区影音先锋| 91黄色激情网站| 亚洲激情网站免费观看| 在线观看视频一区| 亚洲不卡av一区二区三区| 欧美午夜精品免费| 午夜精品福利一区二区三区av|