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

📄 db.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
// MakeNewConnection阑 烹秦 眠啊茄 葛电 目池记阑 秦力茄促.
//////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL CDB::CloseAllCustomConnection()
{
	if (m_NumConnection == 0) return true;
	BOOL ret;
	for (int k=0;k<MAX_NUM_SQL_CONNECTION;k++)
		if (m_ArrayCon[k] != NULL) 
		{
			ret = CloseThisConnection(m_ArrayCon[k]);
			if(!ret) m_pWriteMessage("CloseAllCustomConnection : Close Error"); 
		}
	if(m_NumConnection) return false;
	return true;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// SQL 俊矾 免仿 风凭 
//////////////////////////////////////////////////////////////////////////////////////////////////////
void CDB::DisplaySQLError(LPDBCON pCon)
{

	UCHAR 	szSqlState[MSG_BUF_SIZE];
	UCHAR	szErrorMsg[MSG_BUF_SIZE];
	
	SQLINTEGER	fNativeError	= 0;
	SWORD		cbErrorMsg		= MSG_BUF_SIZE;
	RETCODE		rc;

	rc = SQLError(m_hEnv,
				  pCon ? pCon->hDBC : 0,
				 //0,
				  pCon ? pCon->hStmt : 0,
				  szSqlState,
				  &fNativeError,
				  szErrorMsg,
				  MSG_BUF_SIZE,
				  &cbErrorMsg
				  );

	if (rc != SQL_NO_DATA_FOUND || rc != SQL_ERROR)
	{
		if (fNativeError != 0x1645)	// ignore change database to master context message
		{
			char Buffer[256];
			wsprintf(Buffer,"Error Message: %s SqlState: %s, fNativeError: %d",szErrorMsg, szSqlState,fNativeError);
			m_pWriteMessage(Buffer);
		}
	}
	else
	{	
		m_pWriteMessage("SQLError() failed: , NO_DATA_FOUND OR SQL_ERROR");
	}

}
///////////////////////////////////////////////////////////////////////////////////////////////////////
// SQL 俊矾 免仿 风凭 
//////////////////////////////////////////////////////////////////////////////////////////////////////
void CDB::DisplaySQLError(LPDBCON pCon, HSTMT hStmt)
{

	UCHAR 	szSqlState[MSG_BUF_SIZE];
	UCHAR	szErrorMsg[MSG_BUF_SIZE];
	
	SQLINTEGER	fNativeError	= 0;
	SWORD		cbErrorMsg		= MSG_BUF_SIZE;
	RETCODE		rc;

	rc = SQLError(m_hEnv,
				  pCon ? pCon->hDBC : 0,
				  pCon ? hStmt : 0,
				  szSqlState,
				  &fNativeError,
				  szErrorMsg,
				  MSG_BUF_SIZE,
				  &cbErrorMsg
				  );

	if (rc != SQL_NO_DATA_FOUND || rc != SQL_ERROR)
	{
		if (fNativeError != 0x1645)	// ignore change database to master context message
		{
			char Buffer[256];
			wsprintf(Buffer,"Error Message: %s SqlState: %s, fNativeError: %d",szErrorMsg, szSqlState,fNativeError);
			m_pWriteMessage(Buffer);
		}
	}
	else
	{	
		m_pWriteMessage("SQLError() failed: , NO_DATA_FOUND OR SQL_ERROR");
	}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////
// SQL 辑滚狼 沥焊甫 罐酒柯促.
// 牢磊 : 目池记 器牢磐, 龙狼且 沥焊鸥涝, 沥焊甫 淬阑 器牢磐
// 己傍咯何甫 府畔 
/////////////////////////////////////////////////////////////////////////////////////////////////////// 
SQLRETURN CDB::GetSQLInfo(LPDBCON pCon, SQLUSMALLINT InfoType, SQLUINTEGER fFuncs)
{
	SQLRETURN ret;

	ret = SQLGetInfo(pCon->hDBC,
			InfoType,
			(SQLPOINTER)&fFuncs,
			sizeof(fFuncs),
			NULL);
	return ret;
}

////////////////////////////////////////////////////////////////////////////////////////////
// 楷搬阑 摧绊 勤甸阑 馆券
// 局敲府纳捞记 辆丰 傈俊 角青  
////////////////////////////////////////////////////////////////////////////////////////////
void	CDB::CloseDBConnection()
{
	if(m_bUsingThread)
		CloseDBThread();
	
	if (CloseAllCustomConnection() == false)
		m_pWriteMessage("Some Error at Counting Custom Connection");

	if (m_SucceedInit)
	{
		if (m_pDBClient->hStmt) SQLCloseCursor(m_pDBClient->hStmt);
		if (m_pDBAdmin->hStmt) SQLCloseCursor(m_pDBAdmin->hStmt);
		
		// 巩厘 勤甸 馆券
		if (m_pDBClient->hStmt) SQLFreeHandle(SQL_HANDLE_STMT,m_pDBClient->hStmt);
		if (m_pDBAdmin->hStmt) SQLFreeHandle(SQL_HANDLE_STMT,m_pDBAdmin->hStmt);

		// 辑滚 楷搬 秦力
		SQLDisconnect(m_pDBAdmin->hDBC);
		SQLDisconnect(m_pDBClient->hDBC);

		// 勤甸 馆券 
		SQLFreeHandle(SQL_HANDLE_DBC, m_pDBClient->hDBC);
		SQLFreeHandle(SQL_HANDLE_DBC, m_pDBAdmin->hDBC);
		SQLFreeHandle(SQL_HANDLE_ENV, m_hEnv);
	}
}


////////////////////////////////////////////////////////////////////////////////////////////
// 货肺款 饭内靛甫 眠啊茄促.
// 牢磊
// 目池记, 抛捞喉 捞抚, 抛捞磐漠烦狼 捞抚, 蔼阑 持篮 备炼眉狼 器牢磐, 漠烦俺荐 
//	sprintf(Buffer, "INSERT INTO %s (FirstName, LastName) VALUES ('Cool','Fire')", szTableName);
////////////////////////////////////////////////////////////////////////////////////////////
BOOL CDB::InsertRecord(LPDBCON pCon, LPSTR szTableName, LPVOID lpCol, LPVOID lpValue, BYTE bNumData)
{
	RETCODE		retCode;
	
	if (pCon == NULL) return 0;
	if (lpCol == NULL || lpValue == NULL || bNumData == 0) return 0;
	
	char Buffer[MAX_LENGTH_QUERY];
	switch(bNumData)
	{
	case 1:
	{
		LPDATA1 pCol = (LPDATA1) lpCol;
		LPDATA1 pValue = (LPDATA1) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s) VALUES ('%s')", szTableName,pCol->Data1, pValue->Data1);
		break;
	}
	case 2:
	{
		LPDATA2 pCol = (LPDATA2) lpCol;
		LPDATA2 pValue = (LPDATA2) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s,%s) VALUES ('%s', '%s')", szTableName,pCol->Data1,pCol->Data2, pValue->Data1,pValue->Data2);
		break;
	}
	case 3:
	{
		LPDATA3 pCol = (LPDATA3) lpCol;
		LPDATA3 pValue = (LPDATA3) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s, %s, %s ) VALUES ('%s','%s','%s')", szTableName,pCol->Data1,pCol->Data2,pCol->Data3,pValue->Data1,pValue->Data2,pValue->Data3);
		break;	
	}
	case 4:
	{
		LPDATA4 pCol = (LPDATA4) lpCol;
		LPDATA4 pValue = (LPDATA4) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s, %s, %s, %s ) VALUES ('%s','%s','%s','%s')", szTableName,pCol->Data1,pCol->Data2,pCol->Data3,pCol->Data4, pValue->Data1,pValue->Data2,pValue->Data3,pValue->Data4);
		break;	
	}
	case 5:
	{
		LPDATA5 pCol = (LPDATA5) lpCol;
		LPDATA5 pValue = (LPDATA5) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s, %s, %s, %s, %s ) VALUES ('%s','%s','%s','%s','%s')", szTableName,pCol->Data1,pCol->Data2,pCol->Data3,pCol->Data4,pCol->Data5, pValue->Data1,pValue->Data2,pValue->Data3,pValue->Data4,pValue->Data5);
		break;	
	}
	case 6:
	{
		LPDATA6 pCol = (LPDATA6) lpCol;
		LPDATA6 pValue = (LPDATA6) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s, %s, %s, %s, %s, %s ) VALUES ('%s','%s','%s','%s','%s','%s')", szTableName,pCol->Data1,pCol->Data2,pCol->Data3,pCol->Data4,pCol->Data5,pCol->Data6, pValue->Data1,pValue->Data2,pValue->Data3,pValue->Data4,pValue->Data5,pValue->Data6);
		break;	
	}
	case 7:
	{
		LPDATA7 pCol = (LPDATA7) lpCol;
		LPDATA7 pValue = (LPDATA7) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s, %s, %s, %s, %s, %s, %s) VALUES ('%s','%s','%s','%s','%s','%s','%s')", szTableName,pCol->Data1,pCol->Data2,pCol->Data3,pCol->Data4,pCol->Data5,pCol->Data6, pCol->Data7, pValue->Data1,pValue->Data2,pValue->Data3,pValue->Data4,pValue->Data5,pValue->Data6, pValue->Data7);
		break;	
	}
	case 8:
	{
		LPDATA8 pCol = (LPDATA8) lpCol;
		LPDATA8 pValue = (LPDATA8) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s, %s, %s, %s, %s, %s, %s, %s) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s')", szTableName,pCol->Data1,pCol->Data2,pCol->Data3,pCol->Data4,pCol->Data5,pCol->Data6, pCol->Data7,pCol->Data8, pValue->Data1,pValue->Data2,pValue->Data3,pValue->Data4,pValue->Data5,pValue->Data6, pValue->Data7,pValue->Data8);
		break;	
	}
	case 9:
	{
		LPDATA9 pCol = (LPDATA9) lpCol;
		LPDATA9 pValue = (LPDATA9) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s, %s, %s, %s, %s, %s, %s, %s,%s) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s')", szTableName,pCol->Data1,pCol->Data2,pCol->Data3,pCol->Data4,pCol->Data5,pCol->Data6, pCol->Data7,pCol->Data8,pCol->Data9, pValue->Data1,pValue->Data2,pValue->Data3,pValue->Data4,pValue->Data5,pValue->Data6, pValue->Data7,pValue->Data8,pValue->Data9);
		break;	
	}
	
	case 10:
	{
		LPDATA10 pCol = (LPDATA10) lpCol;
		LPDATA10 pValue = (LPDATA10) lpValue;
		sprintf(Buffer, "INSERT INTO %s (%s, %s, %s, %s, %s, %s, %s, %s,%s,%s) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", szTableName,pCol->Data1,pCol->Data2,pCol->Data3,pCol->Data4,pCol->Data5,pCol->Data6, pCol->Data7,pCol->Data8,pCol->Data9,pCol->Data10,  pValue->Data1,pValue->Data2,pValue->Data3,pValue->Data4,pValue->Data5,pValue->Data6, pValue->Data7,pValue->Data8,pValue->Data9, pValue->Data10);
		break;	
	}
	
	}
	
	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 = SQLExecDirect(pCon->hStmt, (UCHAR *)Buffer, SQL_NTS);
	if (SQLOK(retCode))
	{
		return 1;
	}
	else
		DisplaySQLError(pCon);
	
//	pCon->hStmt = NULL;
	return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////
// 饭内靛甫 昏力茄促
// 牢磊
// 目池记, 抛捞喉 捞抚, 漠烦捞抚 , 蔼
// lpCol == lpValue 牢 饭内靛甫 昏力茄促.
////////////////////////////////////////////////////////////////////////////////////////////
BOOL	CDB::DeleteRecord(LPDBCON pCon, LPSTR szTableName, LPSTR lpCol, LPSTR lpValue)
{
	RETCODE		retCode;
	
	if (pCon == NULL) return 0;
	if (lpCol == NULL || lpValue == NULL) return 0;
	char Buffer[MAX_LENGTH_QUERY];

	sprintf(Buffer, "DELETE FROM %s where %s = '%s'",szTableName,lpCol,lpValue);

	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 = SQLExecDirect(pCon->hStmt, (UCHAR *)Buffer, SQL_NTS);
	if (SQLOK(retCode))
	{
		return 1;
	}
	else
		DisplaySQLError(pCon);

//	pCon->hStmt = NULL;
	return 0;
}

////////////////////////////////////////////////////////////////////////////////////////////
// 饭内靛甫 盎脚茄促
// 牢磊
// 目池记, 抛捞喉 捞抚, 漠烦捞抚 , 蔼
// lpCol == lpValue 牢 饭内靛甫 茫酒辑 DestCol 漠烦狼 蔼阑 DestValue肺 荐沥茄促.
// 父老 lpCol捞 NULL 老 版快 葛电 饭内靛狼 DestCol 漠烦 蔼阑 DestValue肺 荐沥茄促.
////////////////////////////////////////////////////////////////////////////////////////////
BOOL	CDB::UpdateRecord(LPDBCON pCon, LPSTR szTableName, LPSTR lpCol, LPSTR lpValue, LPSTR DestCol, LPSTR	DestValue)
{
	RETCODE		retCode;
	
	if (pCon == NULL) return 0;

	char Buffer[MAX_LENGTH_QUERY];
	if (lpCol == NULL)
		sprintf(Buffer, "Update %s set %s = '%s'",szTableName,DestCol, DestValue);
	else
		sprintf(Buffer, "Update %s set %s = '%s' where %s = '%s'",szTableName,DestCol, DestValue, lpCol,lpValue);

	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 = SQLExecDirect(pCon->hStmt, (UCHAR *)Buffer, SQL_NTS);
	if (SQLOK(retCode))
	{
		return 1;
	}
	else
	{
		switch(retCode)
		{
			case 	SQL_NO_DATA:
				m_pWriteMessage("Updat Fail : No Data");
				break;
			case 	SQL_SUCCESS_WITH_INFO:	
				break;
			case 	SQL_SUCCESS:	
				break;
			case 	SQL_STILL_EXECUTING:	
				break;
			case 	SQL_NEED_DATA:	
				break;
			case 	SQL_ERROR:
			case 	SQL_INVALID_HANDLE:	
			default:
				DisplaySQLError(pCon);
		}
	}

//	pCon->hStmt = NULL;
	return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////
// Update, Delete 橇肺矫廉 傈侩 窃荐.
// 盔窍绰 器杆捞 绝绰 版快 流立 孽府巩阑 累己
// 牢磊狼 箭磊啊 逞 促剧秦 档历洒 嘎苗临荐啊 绝澜..^^;;;
// 窜 select 巩篮 酒贰 促弗 孽府窃荐甫 捞侩且 巴
////////////////////////////////////////////////////////////////////////////////////////////
BOOL	CDB::ExcuteIUDForProcedure(LPDBCON pCon, LPSTR szQuery)
{
	RETCODE		retCode;
	
	if (pCon == NULL) return 0;

	char Buffer[MAX_LENGTH_QUERY];
	strcpy(Buffer,szQuery);


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

	retCode = SQLExecDirect(hStmt, (UCHAR *)Buffer, SQL_NTS);
//	SQLFreeHandle(SQL_HANDLE_STMT,hStmt);
//	return retCode;

	if (SQLOK(retCode))
	{
		SQLFreeHandle(SQL_HANDLE_STMT,hStmt);
		return 1;
	}
	else
	{
		switch(retCode)
		{
			case 	SQL_NO_DATA:
				m_pWriteMessage("ExcuteIUD Fail : No Data");

⌨️ 快捷键说明

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