📄 tsodbc.cpp
字号:
// Return Value ::
// Bug Report ::
//-------------------------------------------------------------------------------------------------------
BOOL TsODBC::Connection(void)
{
//券版 勤甸阑 劝寸 窍绊 滚怜阑 汲沥茄促.
if(SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &m_hEnv) != SQL_SUCCESS) return FALSE;
if(SQLSetEnvAttr(m_hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER) != SQL_SUCCESS) return FALSE;
//楷搬 勤甸阑 劝寸窍绊 楷搬茄促.
if(SQLAllocHandle(SQL_HANDLE_DBC, m_hEnv, &m_hDBC) != SQL_SUCCESS) return FALSE;
int ret = SQLConnect(m_hDBC, (SQLCHAR*)"tsDB1",16, (SQLCHAR*)"sa", 16, (SQLCHAR*)"sa4900db", 16);
if((ret != SQL_SUCCESS) && (ret != SQL_SUCCESS_WITH_INFO) )
{
PrintError( NULL, m_hDBC );
return FALSE;
}
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtcnntpl );
SQLPrepare( m_hStmtcnntpl, (SQLCHAR *)"{call s_cnntpl}", SQL_NTS );
SQLBindParameter( m_hStmtcnntpl, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int) , 0,
&m_iDummy, sizeof(int), &m_siZero);
if( m_iCallType == 1 )
{// LogIn Server
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtAccountSt );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtLogInUp );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtLogOutUp );
/****************** Parameter Bind ********************/
// 肺弊牢 牢刘 沥焊
SQLPrepare( m_hStmtAccountSt, (SQLCHAR *)"{call s_AccSt ( ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtAccountSt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 16 , 0,
m_cID, 16, &m_siNTS);
// 肺弊牢 矫埃 诀单捞飘
SQLPrepare( m_hStmtLogInUp, (SQLCHAR *)"{call s_AccLIUp ( ?, ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtLogInUp, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 16 , 0,
m_cID, 16, &m_siNTS);
SQLBindParameter( m_hStmtLogInUp, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 16, 0,
m_cIP, 16, &m_siNTS);
//SQLBindParameter( m_hStmtLogInUp, 2, SQL_PARAM_INPUT, SQL_C_TYPE_TIMESTAMP, SQL_TYPE_TIMESTAMP, 0 , 0,
// &m_stDate, 0, &m_siNTS); SQL_C_TYPE_DATE SQL_TYPE_DATE
// 肺弊酒眶 矫埃 诀单捞飘
SQLPrepare( m_hStmtLogOutUp, (SQLCHAR *)"{call s_AccLOUp ( ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtLogOutUp, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 16 , 0,
m_cID, 16, &m_siNTS);
//SQLBindParameter( m_hStmtLogOutUp, 2, SQL_PARAM_INPUT, SQL_C_TYPE_TIMESTAMP, SQL_TYPE_TIMESTAMP, 0 , 0,
// &m_stDate, 0, &m_siNTS);
/****************** Col Bind ********************/
// 肺弊牢 牢刘 沥焊 CPassword(16),iAccountID(int),iAdminLevel(byte),BlockData(date)
SQLBindCol( m_hStmtAccountSt, 1, SQL_C_CHAR, m_AccInfo.Password, 16, &m_siColLen );
SQLBindCol( m_hStmtAccountSt, 2, SQL_C_SLONG, &m_AccInfo.iAccountID, 0, &m_siColLen );
SQLBindCol( m_hStmtAccountSt, 3, SQL_C_TINYINT, &m_AccInfo.iAdminLevel, 0, &m_siColLen );
SQLBindCol( m_hStmtAccountSt, 4, SQL_C_TYPE_TIMESTAMP, &m_AccInfo.BlockDate, 0, &m_siColLen );
}
else if( m_iCallType == 2 )
{// Char Server
//疙飞 勤甸阑 劝寸茄促.
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtCharInfoSt );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtDetailInfoSt );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtEquipSt );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtInvenSt );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtStoreSt );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtStore2St );
/****************** Parameter Bind ********************/
// charInfo select
SQLPrepare( m_hStmtCharInfoSt, (SQLCHAR *)"{call s_selectCRInfo ( ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtCharInfoSt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iAccountID, sizeof(int), &m_siZero );
// DetailInfo select
SQLPrepare( m_hStmtDetailInfoSt, (SQLCHAR *)"{call s_selectDetail ( ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtDetailInfoSt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iCharIndex, sizeof(int), &m_siZero );
// Equip Item select
SQLPrepare( m_hStmtEquipSt, (SQLCHAR *)"{call s_selectEquip ( ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtEquipSt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iCharIndex, sizeof(int), &m_siZero );
// InvenInfo select
SQLPrepare( m_hStmtInvenSt, (SQLCHAR *)"{call s_selectItem ( ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtInvenSt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iCharIndex, sizeof(int), &m_siZero );
// Store1 select
SQLPrepare( m_hStmtStoreSt, (SQLCHAR *)"{call s_selectStore ( ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtStoreSt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iAccountID, sizeof(int), &m_siZero );
// Store2 select
SQLPrepare( m_hStmtStore2St, (SQLCHAR *)"{call s_selectStore2 ( ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtStore2St, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iAccountID, sizeof(int), &m_siZero );
/****************** Col Bind ********************/
// charInfo select
SQLBindCol( m_hStmtCharInfoSt, 1, SQL_C_SLONG, &m_info.m_CharInfo._iCharIndex, 0, &m_siColLen );
SQLBindCol( m_hStmtCharInfoSt, 2, SQL_C_CHAR, m_info.m_CharInfo._charName, 16, &m_siColLen );
SQLBindCol( m_hStmtCharInfoSt, 3, SQL_C_SLONG, &m_info.m_CharInfo._iShape.iShape, 0, &m_siColLen );
SQLBindCol( m_hStmtCharInfoSt, 4, SQL_C_TINYINT, &m_info.m_CharInfo._byUnion, 0, &m_siColLen );
SQLBindCol( m_hStmtCharInfoSt, 5, SQL_C_TINYINT, &m_info.m_CharInfo._byJob, 0, &m_siColLen );
SQLBindCol( m_hStmtCharInfoSt, 6, SQL_C_SLONG, &m_info.m_CharInfo._iClassShape.iClassShape, 0, &m_siColLen );
SQLBindCol( m_hStmtCharInfoSt, 7, SQL_C_TINYINT, &m_info.m_CharInfo._bySex, 0, &m_siColLen );
// Equip Item select
int icount = 1;
for( int i = 0; i < MAX_EQUIPCOUNT; i++ )
{
SQLBindCol( m_hStmtEquipSt, icount, SQL_C_SLONG, &m_info.strEquipItem[i].ItemDate.iItemMakeTime, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtEquipSt, icount, SQL_C_SLONG, &m_info.strEquipItem[i].ItemSN.iItemSN, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtEquipSt, icount, SQL_C_SSHORT, &m_info.strEquipItem[i].ItemInfo.wItemNo, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtEquipSt, icount, SQL_C_TINYINT, &m_info.strEquipItem[i].ItemInfo.byItemCount, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtEquipSt, icount, SQL_C_TINYINT, &m_info.strEquipItem[i].ItemInfo.byItemLevel, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtEquipSt, icount, SQL_C_SLONG,
&m_info.strEquipItem[i].ItemInfo.iItemOption.bfc_ItemOption.iItem_SpOption, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtEquipSt, icount, SQL_C_SSHORT,
&m_info.strEquipItem[i].ItemInfo.iItemOption.bfc_ItemOption.iItem_SttOption, 0, &m_siColLen );
icount++;
}
// DetailInfo select m_hStmtDetailInfoSt 20俺.
SQLBindCol( m_hStmtDetailInfoSt, 1, SQL_C_SLONG, &m_info.iMoney, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 2, SQL_C_SLONG, &m_info.iStoreMoney, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 3, SQL_C_TINYINT, &m_info.byStr, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 4, SQL_C_TINYINT, &m_info.byVit, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 5, SQL_C_TINYINT, &m_info.byInt, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 6, SQL_C_TINYINT, &m_info.byMan, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 7, SQL_C_TINYINT, &m_info.byDex, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 8, SQL_C_SSHORT, &m_info.stHp, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 9, SQL_C_SSHORT, &m_info.stMp, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 10, SQL_C_TINYINT, &m_info.byLevel, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 11, SQL_C_SLONG, &m_info.iSpritePoint, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 12, SQL_C_SLONG, &m_info.iFame, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 13, SQL_C_FLOAT, &m_info.xpos, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 14, SQL_C_FLOAT, &m_info.ypos, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 15, SQL_C_FLOAT, &m_info.zpos, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 16, SQL_C_TINYINT, &m_info.byZoneNumber, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 17, SQL_C_TINYINT, &m_info.byClass, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 18, SQL_C_SLONG, &m_info.iGuild, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 19, SQL_C_TINYINT, &m_info.byWarpPos, 0, &m_siColLen );
SQLBindCol( m_hStmtDetailInfoSt, 20, SQL_C_SLONG, &m_info.iExp, 0, &m_siColLen );
// InvenInfo select m_hStmtInvenSt
icount = 1;
for( i = 0; i < MAX_INVENCOUNT; i++ )
{
SQLBindCol( m_hStmtInvenSt, icount, SQL_C_SLONG, &m_info.strInvenItem[i].ItemDate.iItemMakeTime, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtInvenSt, icount, SQL_C_SLONG, &m_info.strInvenItem[i].ItemSN.iItemSN, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtInvenSt, icount, SQL_C_SSHORT, &m_info.strInvenItem[i].ItemInfo.wItemNo, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtInvenSt, icount, SQL_C_TINYINT, &m_info.strInvenItem[i].ItemInfo.byItemCount, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtInvenSt, icount, SQL_C_TINYINT, &m_info.strInvenItem[i].ItemInfo.byItemLevel, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtInvenSt, icount, SQL_C_SLONG,
&m_info.strInvenItem[i].ItemInfo.iItemOption.bfc_ItemOption.iItem_SpOption, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtInvenSt, icount, SQL_C_SSHORT,
&m_info.strInvenItem[i].ItemInfo.iItemOption.bfc_ItemOption.iItem_SttOption, 0, &m_siColLen );
icount++;
}
// Store1 select m_hStmtStoreSt
icount = 1;
for( i = 0; i < HALF_STORECOUNT; i++ )
{
SQLBindCol( m_hStmtStoreSt, icount, SQL_C_SLONG, &m_info.strStoreItem[i].ItemDate.iItemMakeTime, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStoreSt, icount, SQL_C_SLONG, &m_info.strStoreItem[i].ItemSN.iItemSN, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStoreSt, icount, SQL_C_SSHORT, &m_info.strStoreItem[i].ItemInfo.wItemNo, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStoreSt, icount, SQL_C_TINYINT, &m_info.strStoreItem[i].ItemInfo.byItemCount, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStoreSt, icount, SQL_C_TINYINT, &m_info.strStoreItem[i].ItemInfo.byItemLevel, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStoreSt, icount, SQL_C_SLONG,
&m_info.strStoreItem[i].ItemInfo.iItemOption.bfc_ItemOption.iItem_SpOption, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStoreSt, icount, SQL_C_SSHORT,
&m_info.strStoreItem[i].ItemInfo.iItemOption.bfc_ItemOption.iItem_SttOption, 0, &m_siColLen );
icount++;
}
// Store2 select m_hStmtStore2St
icount = 1;
for( i = 0; i < HALF_STORECOUNT; i++ )
{
SQLBindCol( m_hStmtStore2St, icount, SQL_C_SLONG, &m_info.strStoreItem[i + HALF_STORECOUNT].ItemDate.iItemMakeTime, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStore2St, icount, SQL_C_SLONG, &m_info.strStoreItem[i + HALF_STORECOUNT].ItemSN.iItemSN, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStore2St, icount, SQL_C_SSHORT, &m_info.strStoreItem[i + HALF_STORECOUNT].ItemInfo.wItemNo, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStore2St, icount, SQL_C_TINYINT, &m_info.strStoreItem[i + HALF_STORECOUNT].ItemInfo.byItemCount, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStore2St, icount, SQL_C_TINYINT, &m_info.strStoreItem[i + HALF_STORECOUNT].ItemInfo.byItemLevel, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStore2St, icount, SQL_C_SLONG,
&m_info.strStoreItem[i + HALF_STORECOUNT].ItemInfo.iItemOption.bfc_ItemOption.iItem_SpOption, 0, &m_siColLen );
icount++;
SQLBindCol( m_hStmtStore2St, icount, SQL_C_SSHORT,
&m_info.strStoreItem[i + HALF_STORECOUNT].ItemInfo.iItemOption.bfc_ItemOption.iItem_SttOption, 0, &m_siColLen );
icount++;
}
}
else if( m_iCallType == 3 )
{// Game Server
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtCharInfoUp );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtDetailInfoUp );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtEquipUp );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtInvenUp );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtStoreUp );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtStore2Up );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtDelChar );
SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, m_hDBC , &m_hStmtInsert );
/****************** Parameter Bind ********************/
// charInfo delete
SQLPrepare( m_hStmtDelChar, (SQLCHAR *)"{call s_deleteChar ( ?, ?, ?, ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtDelChar, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iAccountID, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtDelChar, 2, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iCharIndex, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtDelChar, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 16 , 0,
&m_info.m_CharInfo._charName, 16, &m_siNTS);
SQLBindParameter( m_hStmtDelChar, 4, SQL_PARAM_OUTPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_iOutPutValue, sizeof(int), &m_siIntLen );
// charInfo Insert
SQLPrepare( m_hStmtInsert, (SQLCHAR *)"{call s_insertChar (?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?,?,?) }", SQL_NTS );
SQLBindParameter( m_hStmtInsert, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iAccountID, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtInsert, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 16 , 0,
&m_info.m_CharInfo._charName, 16, &m_siNTS);
SQLBindParameter( m_hStmtInsert, 3, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iShape.iShape, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtInsert, 4, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.m_CharInfo._byUnion, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtInsert, 5, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.m_CharInfo._byJob, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtInsert, 6, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.m_CharInfo._bySex, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtInsert, 7, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byStr, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtInsert, 8, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byVit, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtInsert, 9, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byInt, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtInsert, 10, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byMan, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtInsert, 11, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byDex, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtInsert, 12, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_SMALLINT, sizeof(short), 0,
&m_info.stHp, sizeof(short), &m_siZero );
SQLBindParameter( m_hStmtInsert, 13, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_SMALLINT, sizeof(short), 0,
&m_info.stMp, sizeof(short), &m_siZero );
SQLBindParameter( m_hStmtInsert, 14, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_REAL, sizeof(float), 0,
&m_info.xpos, sizeof(float), &m_siZero );
SQLBindParameter( m_hStmtInsert, 15, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_REAL, sizeof(float), 0,
&m_info.ypos, sizeof(float), &m_siZero );
SQLBindParameter( m_hStmtInsert, 16, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_REAL, sizeof(float), 0,
&m_info.zpos, sizeof(float), &m_siZero );
SQLBindParameter( m_hStmtInsert, 17, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byZoneNumber, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtInsert, 18, SQL_PARAM_OUTPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_iOutPutValue, sizeof(int), &m_siIntLen );
// charInfo
SQLPrepare( m_hStmtCharInfoUp, (SQLCHAR *)"{call s_UpdateCRInfo ( ?, ?, ?, ? ) }", SQL_NTS );
SQLBindParameter( m_hStmtCharInfoUp, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 16 , 0,
&m_info.m_CharInfo._charName, 16, &m_siNTS);
SQLBindParameter( m_hStmtCharInfoUp, 2, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iShape.iShape, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtCharInfoUp, 3, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.m_CharInfo._byJob, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtCharInfoUp, 4, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iClassShape.iClassShape, sizeof(int), &m_siZero );
// charDetailInfo
SQLPrepare( m_hStmtDetailInfoUp, (SQLCHAR *)"{call s_UpdateDetail ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) }" , SQL_NTS );
SQLBindParameter( m_hStmtDetailInfoUp, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.m_CharInfo._iCharIndex, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 2, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.iMoney, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 3, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.iStoreMoney, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 4, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY, SKILL_SIZE, 0,
(SQLPOINTER)4, 0, &m_siExec);
SQLBindParameter( m_hStmtDetailInfoUp, 5, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byStr, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 6, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byVit, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 7, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byInt, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 8, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byMan, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 9, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byDex, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 10, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_SMALLINT, sizeof(short), 0,
&m_info.stHp, sizeof(short), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 11, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_SMALLINT, sizeof(short), 0,
&m_info.stMp, sizeof(short), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 12, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY, STRANGE_SIZE, 0,
(SQLPOINTER)12, 0, &m_siExec);
SQLBindParameter( m_hStmtDetailInfoUp, 13, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY, BUFF_SIZE, 0,
(SQLPOINTER)13, 0, &m_siExec);
SQLBindParameter( m_hStmtDetailInfoUp, 14, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byLevel, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 15, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.iSpritePoint, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 16, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.iFame, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 17, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_REAL, sizeof(float), 0,
&m_info.xpos, sizeof(float), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 18, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_REAL, sizeof(float), 0,
&m_info.ypos, sizeof(float), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 19, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_REAL, sizeof(float), 0,
&m_info.zpos, sizeof(float), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 20, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byZoneNumber, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 21, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY, MACRO_SIZE, 0,
(SQLPOINTER) 21, 0, &m_siExec);
SQLBindParameter( m_hStmtDetailInfoUp, 22, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byClass, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 23, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.iGuild, sizeof(int), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 24, SQL_PARAM_INPUT, SQL_C_TINYINT, SQL_TINYINT, sizeof(BYTE), 0,
&m_info.byWarpPos, sizeof(BYTE), &m_siZero );
SQLBindParameter( m_hStmtDetailInfoUp, 25, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(int), 0,
&m_info.iExp, sizeof(int), &m_siZero );
// Equip
char cText[1280];
wsprintf(cText,"{call s_UpdateEquip (?");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -