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

📄 mysql.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//	
// 府畔蔼:      己傍(1), 角菩(ret < 0)
//	
/////////////////////////////////////////////////////////////////////////////


//-------------------------------------------------------------------------------------------------
int get_BinaryData_from_Chr_Info2(UCHAR *bankitem,	 char *login_id, char *name)
{	
	SQLINTEGER  cbvalue = SQL_C_BINARY ;
	SQLRETURN retcode;
	SQLHSTMT  hstmt;
	/* Prepare the SQL statement with parameter markers. */
	char query[256]= {0, } ;
	
	sprintf(query, "SELECT bankitem FROM chr_info2 where name='%s' ", name) ;
	
	//printf("\nSQL: %s", query) ;
	SQLAllocStmt(hDBC, &hstmt);
	retcode = SQLExecDirect(hstmt, (UCHAR *)query, SQL_NTS);
	if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
		retcode = SQLFetch(hstmt);
		if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
			
			retcode= SQLGetData(hstmt, 1, SQL_C_BINARY, bankitem, SIZE_OF_BANKITEM, &cbvalue);
			
		}
		else 
		{
			//printf("\n Fetch Error") ;
			SQLFreeStmt(hstmt, SQL_DROP);
			return -1 ;
		}
	}
	else {
		//printf("\n ExecDirect Error") ;
		SQLFreeStmt(hstmt, SQL_DROP);
		return -2 ;
	}
	
	
	if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
	{
		//		SQLTransact(SQL_NULL_HENV, hDBC, SQL_COMMIT);
		SQLFreeStmt(hstmt, SQL_DROP);
		
		return(1); // succeed
	}
	else
	{
		displaySQLError(hstmt) ;
		//		SQLTransact(SQL_NULL_HENV, hDBC, SQL_ROLLBACK);
		SQLFreeStmt(hstmt, SQL_DROP);
		return(-3); // unknown error
	}
}






/////////////////////////////////////////////////////////////////////////////
//
// 窃荐汲疙: 某腐磐狼 binary(农扁啊 奴硅凯甸篮 binary肺 历厘窍绊 binary肺
//				佬绢柯促)甫 历厘(update)窍绰 窃荐.
//
// 颇扼固磐:	ws; 某腐磐 沥焊吝 WS[200]硅凯狼 *, ps; PS[200]硅凯狼 *
//				inv; inv[3][3][8]硅凯狼 *
//				equip, quick; 秦寸 硅凯狼 *
//				(曼绊: inv, equip, quick篮 ItemAttr Structure狼 硅凯捞促)
//
// 府畔蔼: update狼 己傍 咯何; 己傍(1), 角菩(ret < 0)
//
/////////////////////////////////////////////////////////////////////////////

int update_BinaryData_to_Chr_Info(UCHAR *ws, UCHAR *ps, UCHAR *skill, UCHAR *skill_exp, UCHAR *tac_skillEXP, UCHAR *script_var,  UCHAR *inv, UCHAR *equip, UCHAR *quick, 
								  UCHAR *party,
								  UCHAR *relation,
								  UCHAR *employment,
								  UCHAR *itemindex,
								  char *login_id, char *name)		// 1219 YGI
{
	SQLINTEGER  cbdata = 200, cbvalue = SQL_DATA_AT_EXEC ;
	SQLINTEGER	cbwslen, cbpslen, cbskilllen, cbskillexplen,cbtacskillexplen, cbscriptvarlen, cbinvlen, cbquick, cbequip, cbparty, cbrelation, cbemployment, cbitemindex;
	SQLRETURN	retcode;
	SQLHSTMT	hstmt;
	SQLPOINTER	pParamData;
	int			n=0;
	char		aaa=20;
	char		query[256]={0,};
	
	sprintf(query, "UPDATE chr_info SET ws=?, ps=?,skill=?, skill_exp=?, tac_skillEXP=?, script_var=?, inventory=?, equip=?, quick=?, party=?, relation=?, employment=?, itemindex=?  WHERE name='%s'", name) ;
	
	//printf("\nSQL: %s", query) ;
	SQLAllocStmt(hDBC, &hstmt);
	retcode = SQLPrepare(hstmt, (UCHAR *)query, SQL_NTS);
	if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
		
		retcode= SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_WS,			0, ws,			0, &cbwslen); 
		retcode= SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_PS,			0, ps,			0, &cbpslen); 
		retcode= SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_SKILL,			0, skill,		0, &cbskilllen); 
		retcode= SQLBindParameter(hstmt, 4, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_SKILL_EXP,		0, skill_exp,	0, &cbskillexplen); 
		retcode= SQLBindParameter(hstmt, 5, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_TAC_SKILL_EXP,	0, tac_skillEXP,0, &cbtacskillexplen); 
		retcode= SQLBindParameter(hstmt, 6, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_SCRIPT_VAR,	0, script_var,	0, &cbscriptvarlen); 
		retcode= SQLBindParameter(hstmt, 7, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_INV,			0, inv,			0, &cbinvlen); 
		retcode= SQLBindParameter(hstmt, 8, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_EQUIP,			0, equip,		0, &cbequip); 
		retcode= SQLBindParameter(hstmt, 9, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_QUICK,			0, quick,		0, &cbquick); 
		retcode= SQLBindParameter(hstmt, 10, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_PARTY,		0, party,		0, &cbparty     ); 
		retcode= SQLBindParameter(hstmt, 11, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_RELATION,		0, relation,	0, &cbrelation  ); 
		retcode= SQLBindParameter(hstmt, 12, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_EMPLOYMENT,	0, employment,	0, &cbemployment); 
		retcode= SQLBindParameter(hstmt, 13, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_ITEMINDEX,	0, itemindex,	0, &cbitemindex); 
		
		
		if(retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
		{
			SQLFreeStmt(hstmt, SQL_DROP);
			//printf("\nBinding FAIL!!!") ;
			return -5 ;
		}
		
		cbequip			= SQL_LEN_DATA_AT_EXEC(0);
		cbquick			= SQL_LEN_DATA_AT_EXEC(0);
		cbpslen			= SQL_LEN_DATA_AT_EXEC(0);
		cbwslen			= SQL_LEN_DATA_AT_EXEC(0);
		cbskilllen		= SQL_LEN_DATA_AT_EXEC(0);
		cbskillexplen	= SQL_LEN_DATA_AT_EXEC(0);
		cbtacskillexplen= SQL_LEN_DATA_AT_EXEC(0);
		cbscriptvarlen	= SQL_LEN_DATA_AT_EXEC(0);
		cbinvlen		= SQL_LEN_DATA_AT_EXEC(0);
		
		cbparty			= SQL_LEN_DATA_AT_EXEC(0);
		cbrelation		= SQL_LEN_DATA_AT_EXEC(0);
		cbemployment	= SQL_LEN_DATA_AT_EXEC(0);
		cbitemindex		= SQL_LEN_DATA_AT_EXEC(0);
		
		retcode = SQLExecute(hstmt) ;
		
		while(retcode == SQL_NEED_DATA) 
		{      
			retcode = SQLParamData(hstmt, &pParamData) ;
			if(retcode == SQL_NEED_DATA) 
			{
				if(pParamData == ws) 				SQLPutData(hstmt, ws, SIZE_OF_WS);
				else if(pParamData == ps) 			SQLPutData(hstmt, ps, SIZE_OF_PS);      
				else if(pParamData == skill) 		SQLPutData(hstmt, skill, SIZE_OF_SKILL);      
				else if(pParamData == skill_exp) 	SQLPutData(hstmt, skill_exp, SIZE_OF_SKILL_EXP );      
				else if(pParamData == tac_skillEXP)	SQLPutData(hstmt, tac_skillEXP, SIZE_OF_TAC_SKILL_EXP );      
				else if(pParamData == script_var ) 	SQLPutData(hstmt, script_var, SIZE_OF_SCRIPT_VAR );
				else if(pParamData == inv) 			SQLPutData(hstmt, inv, SIZE_OF_INV);
				else if(pParamData == equip) 		SQLPutData(hstmt, equip, SIZE_OF_EQUIP);
				else if(pParamData == quick) 		SQLPutData(hstmt, quick, SIZE_OF_QUICK );
				
				else if(pParamData == party ) 		SQLPutData(hstmt, party,		SIZE_OF_PARTY );
				else if(pParamData == relation) 	SQLPutData(hstmt, relation,		SIZE_OF_RELATION);
				else if(pParamData == employment ) 	SQLPutData(hstmt, employment,	SIZE_OF_EMPLOYMENT );
				else if(pParamData == itemindex ) 	SQLPutData(hstmt, itemindex,	SIZE_OF_ITEMINDEX );
				
			}
			else break ;
		}
		
		retcode = SQLExecute(hstmt) ;
		
		if(retcode == SQL_NEED_DATA)
		{
			retcode= SQLCancel(hstmt) ;
			//			retcode= SQLTransact(SQL_NULL_HENV, hDBC, SQL_COMMIT);
			retcode= SQLFreeStmt(hstmt, SQL_DROP );
			if(retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
				//printf("\n Transact commit Error") ;
			}
			//printf("\nTransact & free") ;
			return(1); // succeed
		}
		else
		{
			displaySQLError(hstmt) ;
			//			SQLTransact(SQL_NULL_HENV, hDBC, SQL_ROLLBACK);
			SQLFreeStmt(hstmt, SQL_DROP);
			return(-3); 
		}
	}
	
	SQLFreeStmt(hstmt, SQL_DROP);
	return 1;
}



int update_BinaryData_to_Chr_Info2(	 UCHAR *bankitem, char *login_id, char *name) // 1225
{
	SQLINTEGER  cbdata = 200, cbvalue = SQL_DATA_AT_EXEC ;
	SQLINTEGER	cbbankitemlen;
	SQLRETURN	retcode;
	SQLHSTMT	hstmt;
	SQLPOINTER	pParamData;
	int			n=0;
	char		aaa=20;
	char		query[256]={0,};
	
	sprintf(query, "UPDATE chr_info2 SET bankitem=? WHERE name='%s'", name) ;
	
	SQLAllocStmt(hDBC, &hstmt);
	retcode = SQLPrepare(hstmt, (UCHAR *)query, SQL_NTS);
	if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) 
	{
		retcode= SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_BANKITEM,			0, bankitem,			0, &cbbankitemlen );
		
		if(retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
		{
			SQLFreeStmt(hstmt, SQL_DROP);
			//printf("\nBinding FAIL!!!") ;
			return -5 ;
		}
		
		cbbankitemlen	= SQL_LEN_DATA_AT_EXEC(0);
		
		retcode = SQLExecute(hstmt) ;
		while(retcode == SQL_NEED_DATA) 
		{      
			retcode = SQLParamData(hstmt, &pParamData) ;
			if(retcode == SQL_NEED_DATA) 
			{
				if(pParamData == bankitem ) 				SQLPutData(hstmt, bankitem , SIZE_OF_BANKITEM );
			}
			else break ;
		}
		
		retcode = SQLExecute(hstmt) ;
		
		if(retcode == SQL_NEED_DATA)
		{
			retcode= SQLCancel(hstmt) ;
			//			retcode= SQLTransact(SQL_NULL_HENV, hDBC, SQL_COMMIT);
			retcode= SQLFreeStmt(hstmt, SQL_DROP );
			
			if(retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
				//printf("\n Transact commit Error") ;
			}
			//printf("\n-----Transact & free----") ;
			return(1); // succeed
		}
		else
		{
			displaySQLError(hstmt) ;
			//			SQLTransact(SQL_NULL_HENV, hDBC, SQL_ROLLBACK);
			SQLFreeStmt(hstmt, SQL_DROP);
			return(-3); 
		}
	}
	
	SQLFreeStmt(hstmt, SQL_DROP);
	return 1;
}




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


int GetMapName_SQL(t_connection c[], int cn)
{
	HSTMT		hStmt = NULL;
	RETCODE		retCode;
	SDWORD		cbValue;
	char		szQuerry[1024];
	
	//sprintf(szQuerry, "Select mapname From chr_info Where name='%s'", c[cn].name);
	/////////////////////////////////////////////////////////////////////////////
	sprintf(szQuerry, "EXEC up_get_map_name '%s'", c[cn].name);
	////////////////////////////////////////////////////////////////////////////
	//	SQLAllocStmt(hDBC_TotalDB, &hStmt);  // 001211 KHS  
	SQLAllocStmt(hDBC, &hStmt);
	retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
	if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
	{
		retCode = SQLFetch(hStmt);
		
		if(retCode == SQL_SUCCESS)
		{
			retCode = SQLGetData(hStmt, 1, SQL_C_CHAR, c[cn].mapname, NM_LENGTH, &cbValue);
			EatRearWhiteChar( c[cn].mapname );
			SQLFreeStmt(hStmt, SQL_DROP);
			return(1);
		}
		else
		{
			SQLFreeStmt(hStmt, SQL_DROP);
			return(-2);
		}
	}
	
	SQLFreeStmt(hStmt, SQL_DROP);
	return(-1);
};




int GetConnectInfo_SQL(t_connection c[], int cn, t_packet *packet, char *mapname)
{
	HSTMT		hStmt = NULL;
	RETCODE		retCode;
	SDWORD		cbValue;
	char		szQuerry[1024];
	char		IP[3][20] = {0,};
	int			PORT;
	int			cc = 0;
	char		tempmapname[ FILENAME_MAX];
	
	if(GetMapName_SQL(c, cn) == 1)
	{
AGAIN_:
	if( mapname == NULL )	strcpy( tempmapname, c[ cn].mapname );	// 盔贰 乐带 磊府肺 埃促
	else					strcpy( tempmapname, mapname );
	
	//sprintf(szQuerry, "Select IP0, IP1, IP2, port From MapName Where mapname='%s'", tempmapname ); //startmapposition[startmap][startposition] );//	c[cn].mapname);
	/////////////////////////////////////////////////////////////////////////////
	sprintf(szQuerry, "EXEC up_get_connect_info '%s'", tempmapname);
	/////////////////////////////////////////////////////////////////////////////
	SQLAllocStmt(hDBC, &hStmt);
	retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
	if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
	{
		retCode = SQLFetch(hStmt);
		
		if(retCode == SQL_SUCCESS)
		{
			retCode = SQLGetData(hStmt, 1, SQL_C_CHAR, IP[0], 18, &cbValue);
			retCode = SQLGetData(hStmt, 2, SQL_C_CHAR, IP[1], 18, &cbValue);
			retCode = SQLGetData(hStmt, 3, SQL_C_CHAR, IP[2], 18, &cbValue);
			retCode = SQLGetData(hStmt, 4, SQL_C_ULONG, &PORT, 0, &cbValue);
			
			memcpy(&packet->u.server_connect_info.ip[0], IP[0], 18);
			memcpy(&packet->u.server_connect_info.ip[1], IP[1], 18);
			memcpy(&packet->u.server_connect_info.ip[2], IP[2], 18);
			packet->u.server_connect_info.port = PORT;
			
			SQLFreeStmt(hStmt, SQL_DROP);
			return(1);
		}
		else
		{
			SQLFreeStmt(hStmt, SQL_DROP);
			if( cc == 0 ) strcpy( tempmapname, "ma-in" );
			cc++;
			if( cc > 1 ) return(-2);
			else goto AGAIN_;
		}
	}
	else
	{
		SQLFreeStmt(hStmt, SQL_DROP);
		return(-1);
	}
	}
	
	SQLFreeStmt(hStmt, SQL_DROP);
	return(-1);
};

int GetChangeMapInfo_SQL(t_connection c[], int cn, t_packet *packet)
{
	HSTMT		hStmt = NULL;
	RETCODE		retCode;
	SDWORD		cbValue;
	char		szQuerry[1024];
	char		IP[3][18];
	int			PORT;
	
	//sprintf(szQuerry, "Select IP0, IP1, IP2, port  From MapName Where mapname='%s'", c[cn].mapname);
	/////////////////////////////////////////////////////////////////////////////
	sprintf(szQuerry, "EXEC up_get_connect_info '%s'", c[cn].mapname);
	/////////////////////////////////////////////////////////////////////////////
	SQLAllocStmt(hDBC, &hStmt);
	retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
	if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
	{
		retCode = S

⌨️ 快捷键说明

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