void db_insert_into_db(char const *timestr char const *typestr, int ctrstr) {
std::string filename = "local/errorlog.txt";
std::ofstream outfile;
outfile.open(filename, std::ios_base::app);
int rc;
char *exec_errmsg;
const char dbname[] = "local/log.db";
sqlite3 *db = NULL;
rc = sqlite3_open(dbname, &db);
if(SQLITE_OK != rc) {
outfile << "Can't open database "<< dbname << " (" << rc << "): " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
exit(1);
}
const char insert_sql[] = "INSERT INTO log (thedate, thetype, thecounter) VALUES (?,?,?)";
sqlite3_stmt *insert_stmt = NULL;
rc = sqlite3_exec(db, "BEGIN IMMEDIATE", 0, 0, 0);
while ( rc != SQLITE_OK) {
sqlite3_busy_timeout(db, 230);
outfile << "Zzzzz in while" << std::endl;
break;
} //while
// prepare_v2
rc = sqlite3_prepare_v2(db, insert_sql, -1, &insert_stmt, NULL);
if(SQLITE_OK != rc) {
outfile << "A Can't prepare insert statment " << insert_sql << " (" << rc << "): " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
}
rc = sqlite3_bind_text(insert_stmt, 1, timestr, strlen(timestr), NULL);
if(SQLITE_OK != rc) {
outfile << "B Error binding value in insert (" << rc << "): " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
}
rc = sqlite3_bind_text(insert_stmt, 2, typestr, strlen(typestr), NULL);
if(SQLITE_OK != rc) {
outfile << "C Error binding value in insert (" << rc << "): " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
}
rc = sqlite3_bind_int(insert_stmt, 3, ctrstr);
if(SQLITE_OK != rc) {
outfile << "D Error binding value in insert (" << rc << "): " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
}
// step
rc = sqlite3_step(insert_stmt);
if(SQLITE_DONE != rc) {
outfile << "H insert statement didn't return DONE (" << rc << "): " << sqlite3_errmsg(db) << std::endl;
}
rc = sqlite3_finalize(insert_stmt);
if(SQLITE_OK != rc) {
outfile << "I Error finalize (" << rc << "): " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
}
rc = sqlite3_close(db);
if(SQLITE_OK != rc) {
outfile << "J Error close db (" << rc << "): " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
}
// commit all to sqlite
sqlite3_exec(db, "COMMIT", 0, 0, 0);
outfile.close();
};
Cgp2b2lkIGRiX2luc2VydF9pbnRvX2RiKGNoYXIgY29uc3QgKnRpbWVzdHIgY2hhciBjb25zdCAqdHlwZXN0ciwgaW50IGN0cnN0cikgewoKCglzdGQ6OnN0cmluZyBmaWxlbmFtZSA9ICJsb2NhbC9lcnJvcmxvZy50eHQiOwoJc3RkOjpvZnN0cmVhbSBvdXRmaWxlOwoJb3V0ZmlsZS5vcGVuKGZpbGVuYW1lLCBzdGQ6Omlvc19iYXNlOjphcHApOwoKCWludCByYzsKCWNoYXIgKmV4ZWNfZXJybXNnOwoKCWNvbnN0IGNoYXIgZGJuYW1lW10gPSAibG9jYWwvbG9nLmRiIjsKCQoJc3FsaXRlMyAqZGIgPSBOVUxMOwoJCQoJcmMgPSBzcWxpdGUzX29wZW4oZGJuYW1lLCAmZGIpOwoJaWYoU1FMSVRFX09LICE9IHJjKSB7CgkJb3V0ZmlsZSA8PCAiQ2FuJ3Qgb3BlbiBkYXRhYmFzZSAiPDwgZGJuYW1lIDw8ICIgKCIgPDwgcmMgPDwgIik6ICIgPDwgc3FsaXRlM19lcnJtc2coZGIpIDw8IHN0ZDo6ZW5kbDsKCQlzcWxpdGUzX2Nsb3NlKGRiKTsKCQlleGl0KDEpOwoJfQoKCWNvbnN0IGNoYXIgaW5zZXJ0X3NxbFtdID0gIklOU0VSVCBJTlRPIGxvZyAodGhlZGF0ZSwgdGhldHlwZSwgdGhlY291bnRlcikgVkFMVUVTICg/LD8sPykiOwoJc3FsaXRlM19zdG10ICppbnNlcnRfc3RtdCA9IE5VTEw7CgoKCXJjID0gc3FsaXRlM19leGVjKGRiLCAiQkVHSU4gSU1NRURJQVRFIiwgMCwgMCwgMCk7Cgl3aGlsZSAoIHJjICE9IFNRTElURV9PSykgewoJCXNxbGl0ZTNfYnVzeV90aW1lb3V0KGRiLCAyMzApOwoJCW91dGZpbGUgPDwgIlp6enp6IGluIHdoaWxlIiA8PCBzdGQ6OmVuZGw7CgkJYnJlYWs7Cgl9IC8vd2hpbGUKCgkvLyBwcmVwYXJlX3YyCglyYyA9IHNxbGl0ZTNfcHJlcGFyZV92MihkYiwgaW5zZXJ0X3NxbCwgLTEsICZpbnNlcnRfc3RtdCwgTlVMTCk7CglpZihTUUxJVEVfT0sgIT0gcmMpIHsKCQlvdXRmaWxlIDw8ICJBIENhbid0IHByZXBhcmUgaW5zZXJ0IHN0YXRtZW50ICIgPDwgaW5zZXJ0X3NxbCA8PCAiICgiIDw8IHJjIDw8ICIpOiAiIDw8IHNxbGl0ZTNfZXJybXNnKGRiKSA8PCBzdGQ6OmVuZGw7CgkJc3FsaXRlM19jbG9zZShkYik7Cgl9CgoJcmMgPSBzcWxpdGUzX2JpbmRfdGV4dChpbnNlcnRfc3RtdCwgMSwgdGltZXN0ciwgc3RybGVuKHRpbWVzdHIpLCBOVUxMKTsKCWlmKFNRTElURV9PSyAhPSByYykgewoJCW91dGZpbGUgPDwgIkIgRXJyb3IgYmluZGluZyB2YWx1ZSBpbiBpbnNlcnQgKCIgPDwgcmMgPDwgIik6ICIgPDwgc3FsaXRlM19lcnJtc2coZGIpIDw8IHN0ZDo6ZW5kbDsKCQlzcWxpdGUzX2Nsb3NlKGRiKTsKCX0gCgkKCXJjID0gc3FsaXRlM19iaW5kX3RleHQoaW5zZXJ0X3N0bXQsIDIsIHR5cGVzdHIsIHN0cmxlbih0eXBlc3RyKSwgTlVMTCk7CglpZihTUUxJVEVfT0sgIT0gcmMpIHsKCQlvdXRmaWxlIDw8ICJDIEVycm9yIGJpbmRpbmcgdmFsdWUgaW4gaW5zZXJ0ICgiIDw8IHJjIDw8ICIpOiAiIDw8IHNxbGl0ZTNfZXJybXNnKGRiKSA8PCBzdGQ6OmVuZGw7CgkJc3FsaXRlM19jbG9zZShkYik7Cgl9IAoJCglyYyA9IHNxbGl0ZTNfYmluZF9pbnQoaW5zZXJ0X3N0bXQsIDMsIGN0cnN0cik7CQoJaWYoU1FMSVRFX09LICE9IHJjKSB7CgkJb3V0ZmlsZSA8PCAiRCBFcnJvciBiaW5kaW5nIHZhbHVlIGluIGluc2VydCAoIiA8PCByYyA8PCAiKTogIiA8PCBzcWxpdGUzX2Vycm1zZyhkYikgPDwgc3RkOjplbmRsOwoJCXNxbGl0ZTNfY2xvc2UoZGIpOwoJfSAKCgkvLyBzdGVwCglyYyA9IHNxbGl0ZTNfc3RlcChpbnNlcnRfc3RtdCk7CglpZihTUUxJVEVfRE9ORSAhPSByYykgewoJCW91dGZpbGUgPDwgIkggaW5zZXJ0IHN0YXRlbWVudCBkaWRuJ3QgcmV0dXJuIERPTkUgKCIgPDwgcmMgPDwgIik6ICIgPDwgc3FsaXRlM19lcnJtc2coZGIpIDw8IHN0ZDo6ZW5kbDsKCX0gCgoJcmMgPSBzcWxpdGUzX2ZpbmFsaXplKGluc2VydF9zdG10KTsJCglpZihTUUxJVEVfT0sgIT0gcmMpIHsKCQlvdXRmaWxlIDw8ICJJIEVycm9yIGZpbmFsaXplICgiIDw8IHJjIDw8ICIpOiAiIDw8IHNxbGl0ZTNfZXJybXNnKGRiKSA8PCBzdGQ6OmVuZGw7CgkJc3FsaXRlM19jbG9zZShkYik7Cgl9IAoJCglyYyA9IHNxbGl0ZTNfY2xvc2UoZGIpOwoJaWYoU1FMSVRFX09LICE9IHJjKSB7CgkJb3V0ZmlsZSA8PCAiSiBFcnJvciBjbG9zZSBkYiAoIiA8PCByYyA8PCAiKTogIiA8PCBzcWxpdGUzX2Vycm1zZyhkYikgPDwgc3RkOjplbmRsOwoJCXNxbGl0ZTNfY2xvc2UoZGIpOwoJfSAKCgkvLyBjb21taXQgYWxsIHRvIHNxbGl0ZQoJc3FsaXRlM19leGVjKGRiLCAiQ09NTUlUIiwgMCwgMCwgMCk7CgoJb3V0ZmlsZS5jbG9zZSgpOwoKfTsK