📄 mysql.cpp
字号:
//
// 府畔蔼: 己傍(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 + -