bool SQLiteCommand::execute() { ZLLogger::Instance().println("sqlite", "execute: " + commandString()); SQLiteConnection &con = (SQLiteConnection &) connection(); if (!con.isOpened()) { myStatements.clear(); return false; } if (!prepareStatements(con)) { return false; } std::vector<sqlite3_stmt *>::iterator it = myStatements.begin(); std::vector<sqlite3_stmt *>::iterator end = myStatements.end(); while (true) { int res = sqlite3_step(*it); switch (res) { case SQLITE_DONE: if (++it == end) { resetStatements(); return true; } break; case SQLITE_OK: case SQLITE_ROW: break; default: dumpError(); finalizeStatements(); return false; } } }
KVStore::KVStore(const std::string& path) : mTransactionDepth(0), mIsTransactionCommited(false), mPath(path), mConn(path) { setupDb(); createFunctions(); prepareStatements(); }
void Database::init() { boost::mutex::scoped_lock lock(dbMutex); this->currentList = &dataA; this->recordsWritten = 0; this->running = true; logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("Database")); setupDatabase(); prepareStatements(); workerThread = new boost::thread(&Database::doWork, this); }
shared_ptr<DBDataReader> SQLiteCommand::executeReader() { ZLLogger::Instance().println("sqlite", "executeReader: " + commandString()); SQLiteConnection &con = (SQLiteConnection &) connection(); if (!con.isOpened()) { myStatements.clear(); return 0; } if (!prepareStatements(con)) { return 0; } myLocked = true; return new SQLiteDataReader(*this); }
bool QgsOSMDatabase::open() { // open database int res = QgsSLConnect::sqlite3_open_v2( mDbFileName.toUtf8().data(), &mDatabase, SQLITE_OPEN_READWRITE, nullptr ); if ( res != SQLITE_OK ) { mError = QString( "Failed to open database [%1]: %2" ).arg( res ).arg( mDbFileName ); close(); return false; } if ( !prepareStatements() ) { close(); return false; } return true; }
bool QgsOSMDatabase::open() { // load spatialite extension spatialite_init( 0 ); // open database int res = sqlite3_open_v2( mDbFileName.toUtf8().data(), &mDatabase, SQLITE_OPEN_READWRITE, 0 ); if ( res != SQLITE_OK ) { mError = QString( "Failed to open database [%1]: %2" ).arg( res ).arg( mDbFileName ); close(); return false; } if ( !prepareStatements() ) { close(); return false; } return true; }
shared_ptr<DBValue> SQLiteCommand::executeScalar() { ZLLogger::Instance().println("sqlite", "executeScalar: " + commandString()); SQLiteConnection &con = (SQLiteConnection &) connection(); if (!con.isOpened()) { myStatements.clear(); return 0; } if (!prepareStatements(con)) { return 0; } std::vector<sqlite3_stmt *>::iterator it = myStatements.begin(); std::vector<sqlite3_stmt *>::iterator end = myStatements.end(); while (true) { int res = sqlite3_step(*it); switch (res) { case SQLITE_DONE: if (++it == end) { resetStatements(); return 0; } break; case SQLITE_OK: break; case SQLITE_ROW: { shared_ptr<DBValue> val = SQLiteDataReader::makeDBValue(*it, /* column = */ 0); resetStatements(); return val; } default: dumpError(); finalizeStatements(); return 0; } } }
void generateSqlite3() { // + classes // + namespaces // + files // - groups // - related pages // - examples //QCString outputDirectory = Config_getString("SQLITE3_OUTPUT"); QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY"); QDir sqlite3Dir(outputDirectory); sqlite3 *db; sqlite3_initialize(); int rc = sqlite3_open_v2(outputDirectory+"/doxygen_sqlite3.db", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0); if (rc != SQLITE_OK) { sqlite3_close(db); msg("database open failed: %s\n", "doxygen_sqlite3.db"); exit(-1); } beginTransaction(db); pragmaTuning(db); initializeSchema(db); if ( -1 == prepareStatements(db) ) { err("sqlite generator: prepareStatements failed!"); return; } // + classes ClassSDict::Iterator cli(*Doxygen::classSDict); ClassDef *cd; for (cli.toFirst();(cd=cli.current());++cli) { msg("Generating Sqlite3 output for class %s\n",cd->name().data()); generateSqlite3ForClass(db,cd); } // + namespaces NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); NamespaceDef *nd; for (nli.toFirst();(nd=nli.current());++nli) { msg("Generating Sqlite3 output for namespace %s\n",nd->name().data()); generateSqlite3ForNamespace(db,nd); } // + files FileNameListIterator fnli(*Doxygen::inputNameList); FileName *fn; for (;(fn=fnli.current());++fnli) { FileNameIterator fni(*fn); FileDef *fd; for (;(fd=fni.current());++fni) { msg("Generating Sqlite3 output for file %s\n",fd->name().data()); generateSqlite3ForFile(db,fd); } } endTransaction(db); }
void generateSqlite3() { // + classes // + namespaces // + files // + groups // + related pages // + examples // + main page QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY"); QDir sqlite3Dir(outputDirectory); sqlite3 *db; sqlite3_initialize(); int rc = sqlite3_open_v2(outputDirectory+"/doxygen_sqlite3.db", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0); if (rc != SQLITE_OK) { sqlite3_close(db); msg("database open failed: %s\n", "doxygen_sqlite3.db"); return; } beginTransaction(db); pragmaTuning(db); if (-1==initializeSchema(db)) return; if ( -1 == prepareStatements(db) ) { err("sqlite generator: prepareStatements failed!"); return; } // + classes ClassSDict::Iterator cli(*Doxygen::classSDict); ClassDef *cd; for (cli.toFirst();(cd=cli.current());++cli) { msg("Generating Sqlite3 output for class %s\n",cd->name().data()); generateSqlite3ForClass(db,cd); } // + namespaces NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); NamespaceDef *nd; for (nli.toFirst();(nd=nli.current());++nli) { msg("Generating Sqlite3 output for namespace %s\n",nd->name().data()); generateSqlite3ForNamespace(db,nd); } // + files FileNameListIterator fnli(*Doxygen::inputNameList); FileName *fn; for (;(fn=fnli.current());++fnli) { FileNameIterator fni(*fn); FileDef *fd; for (;(fd=fni.current());++fni) { msg("Generating Sqlite3 output for file %s\n",fd->name().data()); generateSqlite3ForFile(db,fd); } } // + groups GroupSDict::Iterator gli(*Doxygen::groupSDict); GroupDef *gd; for (;(gd=gli.current());++gli) { msg("Generating Sqlite3 output for group %s\n",gd->name().data()); generateSqlite3ForGroup(db,gd); } // + page { PageSDict::Iterator pdi(*Doxygen::pageSDict); PageDef *pd=0; for (pdi.toFirst();(pd=pdi.current());++pdi) { msg("Generating Sqlite3 output for page %s\n",pd->name().data()); generateSqlite3ForPage(db,pd,FALSE); } } // + dirs { DirDef *dir; DirSDict::Iterator sdi(*Doxygen::directories); for (sdi.toFirst();(dir=sdi.current());++sdi) { msg("Generating Sqlite3 output for dir %s\n",dir->name().data()); generateSqlite3ForDir(db,dir); } } // + examples { PageSDict::Iterator pdi(*Doxygen::exampleSDict); PageDef *pd=0; for (pdi.toFirst();(pd=pdi.current());++pdi) { msg("Generating Sqlite3 output for example %s\n",pd->name().data()); generateSqlite3ForPage(db,pd,TRUE); } } // + main page if (Doxygen::mainPage) { msg("Generating Sqlite3 output for the main page\n"); generateSqlite3ForPage(db,Doxygen::mainPage,FALSE); } endTransaction(db); }