#include #include #include #include #include #include #include "sqlite3.h" static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i instructions; while (getline(is,line)) { char *linechars = new char[line.length() + 1]; strcpy(linechars, line.c_str()); instructions.emplace_back(linechars); //delete[](linechars); } std::cout << "Loading fill file..." << std::endl; std::chrono::time_point start; start = std::chrono::high_resolution_clock::now(); for( char* instr : instructions) { rc = sqlite3_exec(db, instr, callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } } fill_loaded = true; auto end = std::chrono::high_resolution_clock::now(); std::chrono::duration diff = end - start; std::cout << "done, fill file loaded in " << diff.count() * 1000 << "ms" << std::endl; } // lädt anderes einkompiliertes File zeilenweise else if( input == "load mixed" && !mixed_loaded ) { std::ifstream is("mixed.txt"); std::string line; std::vector instructions; while (getline(is,line)) { char *linechars = new char[line.length() + 1]; strcpy(linechars, line.c_str()); instructions.emplace_back(linechars); } std::cout << "Loading mixed file..." << std::endl; std::chrono::time_point start; start = std::chrono::high_resolution_clock::now(); for( char* instr : instructions) { rc = sqlite3_exec(db, instr, callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } } mixed_loaded = true; auto end = std::chrono::high_resolution_clock::now(); std::chrono::duration diff = end - start; std::cout << "done, mixed file loaded in " << diff.count() * 1000 << "ms" << std::endl; } else { std::cout << "Executing input" << std::endl; char *inputchars = new char[input.length() + 1]; strcpy(inputchars, input.c_str()); rc = sqlite3_exec(db, inputchars, callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } delete[](inputchars); } } sqlite3_close(db); return 0; }