diff options
| author | Machiavelli <none@none> | 2010-12-17 17:29:16 +0100 |
|---|---|---|
| committer | Machiavelli <none@none> | 2010-12-17 17:29:16 +0100 |
| commit | 1cdeb4d057d525ec15d60474a8d187fac43b9918 (patch) | |
| tree | 0c7a5e209f46af94da6349ef224cc2da5a9114b5 /src/server/game/Entities/Player | |
| parent | d38b171391bc23d7c05e2488e2a213089e9a1226 (diff) | |
Core/Player: Change equipmentset saving to use prepared statements.
Update issue #4550
Please try to re-reproduce
--HG--
branch : trunk
Diffstat (limited to 'src/server/game/Entities/Player')
| -rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 7809b005ca0..b004f871930 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -23704,31 +23704,43 @@ void Player::_SaveEquipmentSets(SQLTransaction& trans) { uint32 index = itr->first; EquipmentSet& eqset = itr->second; - switch(eqset.state) + PreparedStatement* stmt = NULL; + uint8 j = 0; + switch (eqset.state) { case EQUIPMENT_SET_UNCHANGED: ++itr; break; // nothing do case EQUIPMENT_SET_CHANGED: - CharacterDatabase.escape_string(eqset.Name); - CharacterDatabase.escape_string(eqset.IconName); - trans->PAppend("UPDATE character_equipmentsets SET name='%s', iconname='%s', item0='%u', item1='%u', item2='%u', item3='%u', item4='%u', item5='%u', item6='%u', item7='%u', item8='%u', item9='%u', item10='%u', item11='%u', item12='%u', item13='%u', item14='%u', item15='%u', item16='%u', item17='%u', item18='%u' WHERE guid='%u' AND setguid='"UI64FMTD"' AND setindex='%u'", - eqset.Name.c_str(), eqset.IconName.c_str(), eqset.Items[0], eqset.Items[1], eqset.Items[2], eqset.Items[3], eqset.Items[4], eqset.Items[5], eqset.Items[6], eqset.Items[7], - eqset.Items[8], eqset.Items[9], eqset.Items[10], eqset.Items[11], eqset.Items[12], eqset.Items[13], eqset.Items[14], eqset.Items[15], eqset.Items[16], eqset.Items[17], eqset.Items[18], GetGUIDLow(), eqset.Guid, index); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SET_EQUIP_SET); + stmt->setString(j++, eqset.Name.c_str()); + stmt->setString(j++, eqset.IconName.c_str()); + for (uint8 i=0; i<EQUIPMENT_SLOT_END; ++i) + stmt->setUInt32(j++, eqset.Items[i]); + stmt->setUInt32(j++, GetGUIDLow()); + stmt->setUInt64(j++, eqset.Guid); + stmt->setUInt32(j, index); + trans->Append(stmt); eqset.state = EQUIPMENT_SET_UNCHANGED; ++itr; break; case EQUIPMENT_SET_NEW: - CharacterDatabase.escape_string(eqset.Name); - CharacterDatabase.escape_string(eqset.IconName); - trans->PAppend("INSERT INTO character_equipmentsets VALUES ('%u', '"UI64FMTD"', '%u', '%s', '%s', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u')", - GetGUIDLow(), eqset.Guid, index, eqset.Name.c_str(), eqset.IconName.c_str(), eqset.Items[0], eqset.Items[1], eqset.Items[2], eqset.Items[3], eqset.Items[4], eqset.Items[5], eqset.Items[6], eqset.Items[7], - eqset.Items[8], eqset.Items[9], eqset.Items[10], eqset.Items[11], eqset.Items[12], eqset.Items[13], eqset.Items[14], eqset.Items[15], eqset.Items[16], eqset.Items[17], eqset.Items[18]); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_EQUIP_SET); + stmt->setUInt32(j++, GetGUIDLow()); + stmt->setUInt64(j++, eqset.Guid); + stmt->setUInt32(j++, index); + stmt->setString(j++, eqset.Name.c_str()); + stmt->setString(j++, eqset.IconName.c_str()); + for (uint8 i=0; i<EQUIPMENT_SLOT_END; ++i) + stmt->setUInt32(j++, eqset.Items[i]); + trans->Append(stmt); eqset.state = EQUIPMENT_SET_UNCHANGED; ++itr; break; case EQUIPMENT_SET_DELETED: - trans->PAppend("DELETE FROM character_equipmentsets WHERE setguid="UI64FMTD, eqset.Guid); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_EQUIP_SET); + stmt->setUInt64(0, eqset.Guid); + trans->Append(stmt); m_EquipmentSets.erase(itr++); break; } |
