witam, w jaki sposób mogę ten kod przerobić pod sql'a?
bool Houses::SaveHouseItems(Game* game)
{
std::string filename = g_config.DATA_DIR + "houseitems.xml";
std::stringstream sb;
xmlDocPtr doc;
xmlNodePtr root, tileNode, itemNode;
xmlMutexLock(xmlmutex);
doc = xmlNewDoc((const xmlChar*)"1.0");
doc->children = xmlNewDocNode(doc, nullptr, (const xmlChar*)"houseitems", nullptr);
root = doc->children;
for (size_t i = 0; i < houses.size(); i++)
{
for (size_t j = 0; j < houses[i]->tiles.size(); j++)
{
Position& pos = houses[i]->tiles[j];
Tile *housetile = game->getTile(pos.x, pos.y, pos.z);
bool firstItem = true;
for (int32_t i = housetile->getThingCount(); i >= 0; i--)
{
Item* item = dynamic_cast<Item*>(housetile->getThingByStackPos(i));
if (item && !item->isNotMoveable())
{
if (firstItem)
{
tileNode = xmlNewNode(nullptr, (const xmlChar*)"tile");
sb << pos.x;
xmlSetProp(tileNode, (const xmlChar*) "x", (const xmlChar*)sb.str().c_str());
sb.str("");
sb << pos.y;
xmlSetProp(tileNode, (const xmlChar*) "y", (const xmlChar*)sb.str().c_str());
sb.str("");
sb << pos.z;
xmlSetProp(tileNode, (const xmlChar*) "z", (const xmlChar*)sb.str().c_str());
sb.str("");
firstItem = false;
}
itemNode = item->serialize();
Container *container = dynamic_cast<Container*>(item);
if (container)
SaveContainer(itemNode, container);
xmlAddChild(tileNode, itemNode);
}
}
if (!firstItem)
xmlAddChild(root, tileNode);
}
}
if (xmlSaveFile(filename.c_str(), doc))
{
xmlFreeDoc(doc);
xmlMutexUnlock(xmlmutex);
return true;
}
else
{
std::cout << "Could not save " << filename << "!" << std::endl;
xmlFreeDoc(doc);
xmlMutexUnlock(xmlmutex);
return false;
}
}
query_insert.setQuery("INSERT INTO `houses` (`x`, `y` ) VALUES ");
takie coś wystarczy?