diff options
| author | leak <leakzx@googlemail.com> | 2011-12-31 00:32:05 +0100 |
|---|---|---|
| committer | leak <leakzx@googlemail.com> | 2011-12-31 00:32:05 +0100 |
| commit | 8adac3f246188bba419a02d2126ef33eb3eb4fca (patch) | |
| tree | 66b413e1fbb93610a2ad22e9b237da3e283dd434 /src/server/game/Globals/ObjectMgr.cpp | |
| parent | ded31adfa1f85dc4d3cdbeaaf6cb0e3268604474 (diff) | |
Core/DBLayer: Convert PExecute() queries to prepared statements No. 3
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
| -rwxr-xr-x | src/server/game/Globals/ObjectMgr.cpp | 88 |
1 files changed, 65 insertions, 23 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 5353e048066..9c5719a84ae 100755 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3683,7 +3683,7 @@ void ObjectMgr::LoadQuests() QueryResult result = WorldDatabase.Query("SELECT " //0 1 2 3 4 5 6 7 8 9 10 11 12 "Id, Method, Level, MinLevel, MaxLevel, ZoneOrSort, Type, SuggestedPlayers, LimitTime, RequiredClasses, RequiredRaces, RequiredSkillId, RequiredSkillPoints, " - // 13 14 15 16 17 18 19 20 + // 13 14 15 16 17 18 19 20 "RequiredFactionId1, RequiredFactionId2, RequiredFactionValue1, RequiredFactionValue2, RequiredMinRepFaction, RequiredMaxRepFaction, RequiredMinRepValue, RequiredMaxRepValue, " // 21 22 23 24 25 26 27 28 29 30 31 "PrevQuestId, NextQuestId, ExclusiveGroup, NextQuestIdChain, RewardXPId, RewardOrRequiredMoney, RewardMoneyMaxLevel, RewardSpell, RewardSpellCast, RewardHonor, RewardHonorMultiplier, " @@ -5873,7 +5873,7 @@ GraveYardData const* ObjectMgr::FindGraveYardData(uint32 id, uint32 zoneId) return NULL; } -bool ObjectMgr::AddGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool inDB) +bool ObjectMgr::AddGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool persist /*= true*/) { if (FindGraveYardData(id, zoneId)) return false; @@ -5886,16 +5886,21 @@ bool ObjectMgr::AddGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool inD mGraveYardMap.insert(GraveYardMap::value_type(zoneId, data)); // add link to DB - if (inDB) + if (persist) { - WorldDatabase.PExecute("INSERT INTO game_graveyard_zone (id, ghost_zone, faction) " - "VALUES ('%u', '%u', '%u')", id, zoneId, team); + PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_GRAVEYARD_ZONE); + + stmt->setUInt32(0, id); + stmt->setUInt32(1, zoneId); + stmt->setUInt16(2, uint16(team)); + + WorldDatabase.Execute(stmt); } return true; } -void ObjectMgr::RemoveGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool inDB) +void ObjectMgr::RemoveGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool persist /*= false*/) { GraveYardMap::iterator graveLow = mGraveYardMap.lower_bound(zoneId); GraveYardMap::iterator graveUp = mGraveYardMap.upper_bound(zoneId); @@ -5934,9 +5939,15 @@ void ObjectMgr::RemoveGraveYardLink(uint32 id, uint32 zoneId, uint32 team, bool mGraveYardMap.erase(itr); // remove link from DB - if (inDB) + if (persist) { - WorldDatabase.PExecute("DELETE FROM game_graveyard_zone WHERE id = '%u' AND ghost_zone = '%u' AND faction = '%u'", id, zoneId, team); + PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GRAVEYARD_ZONE); + + stmt->setUInt32(0, id); + stmt->setUInt32(1, zoneId); + stmt->setUInt16(2, uint16(team)); + + WorldDatabase.Execute(stmt); } return; @@ -6160,10 +6171,10 @@ void ObjectMgr::SetHighestGuids() m_hiItemGuid = (*result)[0].GetUInt32()+1; // Cleanup other tables from not existed guids ( >= m_hiItemGuid) - CharacterDatabase.PExecute("DELETE FROM character_inventory WHERE item >= '%u'", m_hiItemGuid); - CharacterDatabase.PExecute("DELETE FROM mail_items WHERE item_guid >= '%u'", m_hiItemGuid); - CharacterDatabase.PExecute("DELETE FROM auctionhouse WHERE itemguid >= '%u'", m_hiItemGuid); - CharacterDatabase.PExecute("DELETE FROM guild_bank_item WHERE item_guid >= '%u'", m_hiItemGuid); + CharacterDatabase.PExecute("DELETE FROM character_inventory WHERE item >= '%u'", m_hiItemGuid); // One-time query + CharacterDatabase.PExecute("DELETE FROM mail_items WHERE item_guid >= '%u'", m_hiItemGuid); // One-time query + CharacterDatabase.PExecute("DELETE FROM auctionhouse WHERE itemguid >= '%u'", m_hiItemGuid); // One-time query + CharacterDatabase.PExecute("DELETE FROM guild_bank_item WHERE item_guid >= '%u'", m_hiItemGuid); // One-time query result = WorldDatabase.Query("SELECT MAX(guid) FROM gameobject"); if (result) @@ -8046,11 +8057,18 @@ bool ObjectMgr::AddGameTele(GameTele& tele) m_GameTeleMap[new_id] = tele; - std::string safeName(tele.name); - WorldDatabase.EscapeString(safeName); + PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_GAME_TELE); + + stmt->setUInt32(0, new_id); + stmt->setFloat(1, tele.position_x); + stmt->setFloat(2, tele.position_y); + stmt->setFloat(3, tele.position_z); + stmt->setFloat(4, tele.orientation); + stmt->setUInt16(5, uint16(tele.mapId)); + stmt->setString(6, tele.name); + + WorldDatabase.Execute(stmt); - WorldDatabase.PExecute("INSERT INTO game_tele (id, position_x, position_y, position_z, orientation, map, name) VALUES (%u, %f, %f, %f, %f, %d, '%s')", - new_id, tele.position_x, tele.position_y, tele.position_z, tele.orientation, tele.mapId, safeName.c_str()); return true; } @@ -8068,7 +8086,12 @@ bool ObjectMgr::DeleteGameTele(const std::string& name) { if (itr->second.wnameLow == wname) { - WorldDatabase.PExecute("DELETE FROM game_tele WHERE name = '%s'", itr->second.name.c_str()); + PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAME_TELE); + + stmt->setString(0, itr->second.name); + + WorldDatabase.Execute(stmt); + m_GameTeleMap.erase(itr); return true; } @@ -8456,16 +8479,26 @@ void ObjectMgr::LoadGossipMenuItems() sLog->outString(); } -void ObjectMgr::AddVendorItem(uint32 entry, uint32 item, int32 maxcount, uint32 incrtime, uint32 extendedcost, bool savetodb) +void ObjectMgr::AddVendorItem(uint32 entry, uint32 item, int32 maxcount, uint32 incrtime, uint32 extendedCost, bool persist /*= true*/) { VendorItemData& vList = m_mCacheVendorItemMap[entry]; - vList.AddItem(item, maxcount, incrtime, extendedcost); + vList.AddItem(item, maxcount, incrtime, extendedCost); - if (savetodb) - WorldDatabase.PExecute("INSERT INTO npc_vendor (entry, item, maxcount, incrtime, extendedcost) VALUES('%u', '%u', '%u', '%u', '%u')", entry, item, maxcount, incrtime, extendedcost); + if (persist) + { + PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_NPC_VENODR); + + stmt->setUInt32(0, entry); + stmt->setUInt32(1, item); + stmt->setUInt8(2, maxcount); + stmt->setUInt32(3, incrtime); + stmt->setUInt32(4, extendedCost); + + WorldDatabase.Execute(stmt); + } } -bool ObjectMgr::RemoveVendorItem(uint32 entry, uint32 item, bool savetodb) +bool ObjectMgr::RemoveVendorItem(uint32 entry, uint32 item, bool persist /*= true*/) { CacheVendorItemMap::iterator iter = m_mCacheVendorItemMap.find(entry); if (iter == m_mCacheVendorItemMap.end()) @@ -8474,7 +8507,16 @@ bool ObjectMgr::RemoveVendorItem(uint32 entry, uint32 item, bool savetodb) if (!iter->second.RemoveItem(item)) return false; - if (savetodb) WorldDatabase.PExecute("DELETE FROM npc_vendor WHERE entry='%u' AND item='%u'", entry, item); + if (persist) + { + PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_NPC_VENDOR); + + stmt->setUInt32(0, entry); + stmt->setUInt32(1, item); + + WorldDatabase.Execute(stmt); + } + return true; } |
