示例#1
0
	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);
	}
示例#2
0
	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);
	}
示例#3
0
	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);
	}
示例#4
0
	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");    
}