⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:
   if (retCode == SQL_ERROR)
		DisplaySQLError(pCon);

	SQLCloseCursor(pCon->hStmt);
	SQLFreeStmt(pCon->hStmt, SQL_UNBIND);
	SQLFreeStmt(pCon->hStmt, SQL_RESET_PARAMS);

   return RealData;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 捞 钎矫肺 弓牢 老访狼 窃荐甸篮 胶农费 皋筋靛甫 困茄 窃荐甸捞促.
// 抗甫 甸搁 霸矫魄阑 钎泅且 版快甫 焊搁 葛电 单捞鸥甫 老矫俊 罐酒坷绰 霸 酒聪扼
// 老沥樊狼 饭内靛甫 罐酒坷绊 其捞瘤 窜困肺 罐酒坷绰 巴阑 舅荐 乐促.
// 捞 窃荐甸篮 弊繁 扁瓷阑 瘤盔秦 霖促.
// 溜 饭内靛狼 樊捞 茄锅俊 罐酒坷扁俊 瘤唱摹霸 腹芭唱 老矫俊 促 罐阑 鞘夸啊 绝阑 版快
// 汲沥茄 蔼父怒 饭内靛甫 罐酒坷绊 眠饶 窃荐 荤侩俊 蝶扼 捞饶 肚绰 捞傈狼 饭内靛甫 罐酒棵 荐 乐霸 窍绰 巴捞促.
// 捞 老访狼 窃荐甫 荤侩窍绰 规过篮 SampleGenerateResultSet() 窃荐甫 曼炼且 巴.
// 措帆 鉴辑甫 汲疙窍搁 刚历 GenerateResultSet 甫 角青秦 搬苞悸阑 积己茄 饶 
// GetNext, GetLast 殿殿狼 窃荐甫 捞侩秦 盔窍绰 何盒阑 曽柯饶 
// CloseRecordSet 窃荐肺 搬苞悸阑 摧绰促.


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// GenerateResultSet窃荐 
// 窃荐牢磊绰 BindQuery苞 鞍促.
BOOL	CDB::GenerateResultSet(LPDBCON pCon, LPSTR szBuffer, LPBIND lpBind, int StSize, SQLSMALLINT sqlType, int Rowset)
{
	SQLRETURN retCode;                    // return code
	SQLUSMALLINT RowStatusArray[MAX_ROW_NUM];

	if (pCon->hScrollStmt == NULL)
	{
		retCode = SQLAllocHandle(SQL_HANDLE_STMT, pCon->hDBC, &(pCon->hScrollStmt));
		if(retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
			DisplaySQLError(pCon,pCon->hScrollStmt);
	}

	SQLSetCursorName(pCon->hScrollStmt, (SQLCHAR*) &(pCon->szCursorName[0]), SQL_NTS);

	SQLSetStmtAttr(pCon->hScrollStmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER) SQL_CURSOR_KEYSET_DRIVEN, 0);
	SQLSetStmtAttr(pCon->hScrollStmt, SQL_ATTR_ROW_BIND_TYPE, (SQLPOINTER) StSize, 0);
	SQLSetStmtAttr(pCon->hScrollStmt, SQL_ATTR_ROW_ARRAY_SIZE,(SQLPOINTER) Rowset, 0);
	SQLSetStmtAttr(pCon->hScrollStmt, SQL_ATTR_ROW_STATUS_PTR, RowStatusArray, 0);
	SQLSetStmtAttr(pCon->hScrollStmt, SQL_ATTR_ROWS_FETCHED_PTR, &m_NumRowsFetched, 0);

	// 皋葛府 官牢爹
	for (int k = 0;k < lpBind->nColNum;k++)
	{
		if (sqlType == NULL)
			SQLBindCol(pCon->hScrollStmt,k+1,lpBind->QueryType[k], ((LPROWWISEBIND) lpBind->pData[0])->Data[k],((LPROWWISEBIND) lpBind->pData[0])->Length[k],&(((LPROWWISEBIND) lpBind->pData[0])->LengthRead[k]));
		else SQLBindCol(pCon->hScrollStmt,k+1,sqlType, ((LPROWWISEBIND) lpBind->pData[0])->Data[k],((LPROWWISEBIND) lpBind->pData[0])->Length[k],&(((LPROWWISEBIND) lpBind->pData[0])->LengthRead[k]));
	}
	// 角青 
	retCode = SQLExecDirect(pCon->hScrollStmt, (UCHAR *)szBuffer, SQL_NTS);
   // 单捞磐 菩莫

	retCode = SQLFetchScroll(pCon->hScrollStmt,SQL_FETCH_NEXT,0);
	if (retCode == SQL_ERROR)
		DisplaySQLError(pCon,pCon->hScrollStmt);

   // 目辑狼 困摹甫 搬苞悸狼 盖 贸澜 
   SQLSetPos(pCon->hScrollStmt, 1, SQL_POSITION, SQL_LOCK_NO_CHANGE);

	// 犁劝侩窍绰 搬苞悸捞骨肺 橇府窍瘤 臼绰促.	
   return 1;
}
// 促澜 单捞鸥悸阑 掘绰促.
// 霸矫魄狼 促澜 格废 焊扁扼绊 积阿窍搁 等促.
BOOL	CDB::GetNextRecordSet(LPDBCON pCon)
{
	SQLRETURN retCode;                    // return code
	retCode = SQLFetchScroll(pCon->hScrollStmt, SQL_FETCH_NEXT, 0);

	if (SQLOK(retCode))
		return 1;
	else if (retCode == SQL_NO_DATA) return 0;
	else DisplaySQLError(pCon,pCon->hScrollStmt);
	return 0;
}
// 付瘤阜 单捞鸥悸阑 掘绰促.
// 付瘤阜 饭内靛何磐 茄锅俊 免仿且 肮荐措肺 掘绢柯促.
// 霸矫魄狼 俩 付瘤阜 格废 焊绰 扁瓷
BOOL	CDB::GetLastRecordSet(LPDBCON pCon)
{
	SQLRETURN retCode;                    // return code
	retCode = SQLFetchScroll(pCon->hScrollStmt, SQL_FETCH_LAST, 0);

	if (SQLOK(retCode))
		return 1;
	else if (retCode == SQL_NO_DATA) return 0;
	else DisplaySQLError(pCon,pCon->hScrollStmt);
	return 0;
}
// 弊傈 单捞鸥悸阑 掘绰促.
// 付瘤阜 菩摹 傈 其捞瘤
// 霸矫魄 格废 弊 傈 格废 焊扁
BOOL	CDB::GetPriorRecordSet(LPDBCON pCon)
{
	SQLRETURN retCode;                    // return code
	retCode = SQLFetchScroll(pCon->hScrollStmt, SQL_FETCH_PRIOR, 0);

	if (SQLOK(retCode))
		return 1;
	else if (retCode == SQL_NO_DATA) return 0;
	else DisplaySQLError(pCon,pCon->hScrollStmt);
	return 0;
}
// 霉 其捞瘤甫 掘绰促.
// 霸矫魄狼 俩 梅 格废 焊扁
BOOL	CDB::GetFirstRecordSet(LPDBCON pCon)
{
	SQLRETURN retCode;                    // return code
	retCode = SQLFetchScroll(pCon->hScrollStmt, SQL_FETCH_FIRST, 0);

	if (SQLOK(retCode))
		return 1;
	else if (retCode == SQL_NO_DATA) return 0;
	else DisplaySQLError(pCon,pCon->hScrollStmt);
	return 0;
}
// 凯妨柳 勤甸狼 饭内靛 悸阑 摧绊 目辑甫 秦力茄促.
BOOL	CDB::CloseRecordSet(LPDBCON pCon)
{
	SQLCloseCursor(pCon->hScrollStmt);
	SQLFreeStmt(pCon->hScrollStmt, SQL_UNBIND);
	SQLFreeStmt(pCon->hScrollStmt, SQL_RESET_PARAMS);
	return 1;
}


// 泅犁 目辑狼 困摹俊 乐绰 单捞磐甫 昏力 
BOOL	CDB::DeleteRecordInCursor(LPDBCON pCon)
{
	if (pCon->nCursorNum == 0 ) return 0;

	SQLRETURN retCode;                    // return code
	retCode = SQLSetPos(pCon->hScrollStmt, pCon->nCursorNum, SQL_DELETE, SQL_LOCK_NO_CHANGE);
	if (SQLOK(retCode))
		return 1;
	else DisplaySQLError(pCon,pCon->hScrollStmt);
	return 0;
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 官捞呈府肺 历厘窍扁 
// 牢磊绰 目池记 器牢磐, 孽府巩, 历厘且 单捞磐狼 荤捞令, 历厘俊 鞘夸茄 颇扼皋磐甫 淬篮 器牢磐,弊 器牢磐 郴侩狼 辨捞, 角力 历厘且 蔼阑 淬篮 器牢磐
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL CDB::SaveDataByPtr( LPDBCON pCon, char* szQuery, int nSize, LPVOID pPara, long nBuffersize, LPVOID pSettingData)
{
	if (pCon == NULL)
		return FALSE;

	RETCODE		retCode;
	RETCODE		putCode;
	SQLPOINTER	pParamData;

//	long		lqitem;
//	long		leitem;
//	long		liitem;

	long		exec;


	if (pCon->hStmt == NULL)
	{
		retCode = SQLAllocHandle(SQL_HANDLE_STMT, pCon->hDBC, &(pCon->hStmt));
		if( retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
			DisplaySQLError(pCon);
	}

	retCode = SQLPrepare(pCon->hStmt, (UCHAR *)szQuery, SQL_NTS);
	if (retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO) 
	{
		retCode = SQLBindParameter(pCon->hStmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY, nSize, 0, pPara, 0, &nBuffersize );
		if( !SQLOK( retCode))
		{
			DisplaySQLError(pCon);
			return FALSE;
		}

		exec = SQL_LEN_DATA_AT_EXEC(0);

		retCode = SQLExecute(pCon->hStmt);
		if( retCode != SQL_NEED_DATA) 
		{
			DisplaySQLError(pCon);
			return  FALSE;
		}

		while( retCode == SQL_NEED_DATA)
		{      
			retCode = SQLParamData(pCon->hStmt, &pParamData);
			if( retCode == SQL_NEED_DATA)
			{
				putCode = SQLPutData(pCon->hStmt, pSettingData, nSize );
				if( !SQLOK( putCode))
				{
					DisplaySQLError(pCon);
					return  FALSE;
				}
			}
			else break;
		}
	}

	retCode = SQLFreeStmt( pCon->hStmt, SQL_CLOSE );
	if( !SQLOK( retCode))
	{
		return FALSE;
		DisplaySQLError(pCon);
	}
//	pCon->hStmt = NULL;
	return TRUE;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 官捞呈府肺 蔼 罐酒坷扁 
// 牢磊绰 目池记 器牢磐, 孽府巩, 罐酒棵 辨捞, 罐篮 单捞磐甫 淬阑 器牢磐 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL CDB::LoadDataByPtr( LPDBCON pCon, char* szQuery, int nSize, LPVOID pData)
{
	if (pCon == NULL)
		return FALSE;

	RETCODE		retCode;
	if (pCon->hStmt == NULL)
	{
		retCode = SQLAllocHandle(SQL_HANDLE_STMT, pCon->hDBC, &(pCon->hStmt));
		if(retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
		{
			DisplaySQLError(pCon);
			return FALSE;
		}
	}

	long	IndPtr;

	retCode = SQLExecDirect(pCon->hStmt, (UCHAR *)szQuery, SQL_NTS);

	if (0 != SQLOK(retCode))
	{
		retCode = SQLFetch(pCon->hStmt);

		if (retCode == SQL_SUCCESS)
		{
			memset(pData, 0x00, nSize);

			retCode = SQLGetData(pCon->hStmt, 1, SQL_C_BINARY, pData, nSize, &IndPtr);

			SQLFreeStmt(pCon->hStmt,SQL_CLOSE);

			if (retCode == SQL_SUCCESS)
				return TRUE;
			else
				return FALSE;
		}
	}
	
	DisplaySQLError(pCon);

	SQLFreeStmt( pCon->hStmt, SQL_CLOSE);
//	pCon->hStmt = NULL;

	return FALSE;
}


void CDB::DeleteThisPointer(DWORD dwFnNo, LPVOID pTarget)
{
	switch(dwFnNo)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
	case 6:
	case 7:
	case 8:
	case 9:
	case 10:
	case 11:
	case 12:
	case 13:
	case 14:
		break;
	case 101: //Free Query
		{
			LPQUERY pData	= (LPQUERY) pTarget;
			m_pResultMemory->Free((char*)pData);
			break;
		}
	case 104: //FreeLarge Query
		{
			LPLARGEQUERY pData	= (LPLARGEQUERY) pTarget;
			m_pResultMemory->Free((char*)pData);
			break;
		}
	case 105: //FreeMiddle Query
		{
			LPMIDDLEQUERY pData	= (LPMIDDLEQUERY) pTarget;
			m_pResultMemory->Free((char*)pData);
			break;
		}		
	case 102: // SingleQuery
		{
			LPQUERY pData	= (LPQUERY) pTarget;
			m_pResultMemory->Free((char*)pData);
			break;
		}
	case 103: // SingleQueryDA
		{
			LPQUERYDA pData	= (LPQUERYDA) pTarget;
			LPDBSDWORD pLength	= (LPDBSDWORD) pData->pLength;	
			LPDBSTRING pDatast	= (LPDBSTRING) pData->pData;
			delete [] pLength;
			delete [] pDatast;
			delete  pData;
			break;
		}
	}
}

void	CDB::FreeDBMessageMemory(char* pTarget)
{
//	EnterCriticalSection(&m_csDBMessageMemory);
	m_pDBMessageMemory->Free(pTarget);
//	LeaveCriticalSection(&m_csDBMessageMemory);
}

DWORD	CDB::GetUnusedDBMemoryNum()
{
	return m_pDBMessageMemory->GetFreeIndexNum();

//	EnterCriticalSection(&m_csDBMessageMemory);
//	DWORD temp = m_pDBMessageMemory->GetFreeIndexNum();
//	LeaveCriticalSection(&m_csDBMessageMemory);
//	return temp;
}
char*	CDB::GetDBMessageMemory()
{
	return m_pDBMessageMemory->Alloc();
//	EnterCriticalSection(&m_csDBMessageMemory);
//	char* temp = m_pDBMessageMemory->Alloc();
//	LeaveCriticalSection(&m_csDBMessageMemory);
//	return temp;
}




void	CDB::FreeDBStackMemory(char* pTarget)
{
//	EnterCriticalSection(&m_csDBStackMemory);
	m_pDBStackMemory->Free(pTarget);
//	LeaveCriticalSection(&m_csDBStackMemory);
}
DWORD	CDB::GetUnusedStackMemoryNum()
{
	return m_pDBStackMemory->GetFreeIndexNum();
//	EnterCriticalSection(&m_csDBStackMemory);
//	DWORD temp = m_pDBStackMemory->GetFreeIndexNum();
//	LeaveCriticalSection(&m_csDBStackMemory);
//	return temp;
}

char*	CDB::GetDBMessageStackMemory()
{
	return m_pDBStackMemory->Alloc();
//	EnterCriticalSection(&m_csDBStackMemory);
//	char* temp = m_pDBStackMemory->Alloc();
//	LeaveCriticalSection(&m_csDBStackMemory);
//	return temp;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -