std::string SqliteDb::getExecuteSql(const std::string &tableName, const std::string &columnName, const std::string &columnValue) { auto conditionDict = Map::create(); conditionDict->setObjectForKey(RefString::create(columnValue), columnName); return this->getExecuteSql(tableName, conditionDict); }
bool SqliteDb::deleteFromTable(const std::string &tableName, const std::string &columnName, const std::string &columnValue) { auto conditionDict = Map::create(); conditionDict->setObjectForKey(RefString::create(columnValue), columnName); return this->deleteFromTable(tableName, conditionDict); }
bool SqliteDb::updateTable(const std::string &tableName, Map *keyValueDict, const std::string &columnName, const std::string &columnValue) { auto conditionDict = Map::create(); conditionDict->setObjectForKey(RefString::create(columnValue), columnName); return this->updateTable(tableName, keyValueDict, conditionDict); }
Vector *SqliteDb::executeQuery(const std::string &sql) { CCLOG("Sqlite: %s", sql.c_str()); auto valueArray = Vector::create(); sqlite3_stmt *pStmt = nullptr; bool res = sqlite3_prepare(_db, sql.c_str(), -1, &pStmt, nullptr) == SQLITE_OK; if (res) { while (sqlite3_step(pStmt) == SQLITE_ROW) { auto columnDict = Map::create(); int columnNum = sqlite3_column_count(pStmt); for (int i = 0; i < columnNum; ++i) { int type = sqlite3_column_type(pStmt, i); const char *szName = sqlite3_column_name(pStmt, i); Ref *pValue = nullptr; if (type == SQLITE_INTEGER) { pValue = RefInteger::create(sqlite3_column_int(pStmt, i)); } else if (type == SQLITE_FLOAT) { pValue = RefDouble::create(sqlite3_column_double(pStmt, i)); } else if (type == SQLITE_TEXT) { pValue = RefString::create((const char*)sqlite3_column_text(pStmt, i)); } columnDict->setObjectForKey(pValue, szName); } valueArray->addObject(columnDict); } sqlite3_finalize(pStmt); } return valueArray; }
//------------------------------------------------------------------------------ LHDictionary::LHDictionary(std::stringstream& fileIN) { ++numberOfDicts; std::string lastKey = ""; int objCounter = 0; std::string objText; //printf("DICT START\n"); //printf("........................................................\n"); //std::cout << fileIN.str() << std::endl; //printf("................................................................\n"); //file needs to start with <dict> else its not a LHDictionary file while(!fileIN.eof()) { std::string line; getline(fileIN,line); //printf("D: c:%d %s\n", objCounter, line.c_str()); if (std::string::npos != line.find("<key>")){ if(1 < objCounter){ objText+= line+"\n"; }else{ lastKey = valueForField(line); } } else if (std::string::npos != line.find("<string>")){ if(1 < objCounter){ objText+= line+"\n"; }else{ setObjectForKey(new LHObject(valueForField(line)), lastKey); } } else if (std::string::npos != line.find("<real>")){ if(1 < objCounter){ objText+= line+"\n"; }else{ setObjectForKey(new LHObject(floatFromString(valueForField(line))), lastKey); } } else if (std::string::npos != line.find("<integer>")){ if(1 < objCounter){ objText+= line+"\n"; }else{ setObjectForKey(new LHObject(intFromString(valueForField(line))), lastKey); } } else if (std::string::npos != line.find("<true/>")){ if(1 < objCounter){ objText+= line+"\n"; }else{ setObjectForKey(new LHObject(true), lastKey); } } else if (std::string::npos != line.find("<false/>")){ if(1 < objCounter){ objText+= line+"\n"; }else{ setObjectForKey(new LHObject(false), lastKey); } } else if (std::string::npos != line.find("<dict>")){ ++objCounter; if(1 < objCounter){ objText+= line+"\n"; } } else if (std::string::npos != line.find("</dict>")){ if(1 < objCounter){ objText+= line+"\n"; } --objCounter; if(1 == objCounter) { std::stringstream infoText(objText); setObjectForKey(new LHObject(new LHDictionary(infoText)), lastKey); objText = ""; } if(0 > objCounter) { objText = ""; objCounter = 1; } } else if (std::string::npos != line.find("<dict/>")){ std::stringstream dummyText; setObjectForKey(new LHObject(new LHDictionary(dummyText)), lastKey); } else if (std::string::npos != line.find("<array>")){ ++objCounter; if(1 != objCounter){ objText+= line+"\n"; } } else if (std::string::npos != line.find("</array>")){ if(1 != objCounter){ objText+= line+"\n"; } --objCounter; if(1 == objCounter) { std::stringstream infoText(objText); setObjectForKey(new LHObject(new LHArray(infoText)), lastKey); objText = ""; } if(0 > objCounter) { objText = ""; objCounter = 1; } } else if (std::string::npos != line.find("<array/>")){ setObjectForKey(new LHObject(new LHArray()), lastKey); //objText = ""; //objCounter = 1; } } //printf("DICT END ................................................................\n"); }