amd_database_query_cb cb, void* user_data, bool sync) {
if (sync) {
try {
- auto cursor = std::make_unique<Cursor>(db_->GetHandle(),
+ amd::Database db(PATH_AMD_DB);
+ db.Open(SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE);
+ auto cursor = std::make_unique<Cursor>(db.GetHandle(),
std::move(query), std::move(bind_text));
return cb(cursor.get(), user_data);
} catch (const amd::Exception& e) {
if (!disposed_)
return;
- try {
- db_.reset(new amd::Database(PATH_AMD_DB));
- db_->Open(SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE);
- } catch (const amd::Exception& e) {
- _E("Open() is failed. error(%d)", e.GetErrorCode());
- return;
- }
-
+ db_.reset(new amd::Database(PATH_AMD_DB));
thread_ = std::thread([&]{
SetComm("DBWriter+");
do {
if (job.IsDone())
break;
+ try {
+ db_->Open(SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE);
+ } catch (const amd::Exception& e) {
+ _E("Open() is failed. error(%d)", e.GetErrorCode());
+ continue;
+ }
+
db_->BeginTransaction();
auto cursor = std::make_unique<Cursor>(db_->GetHandle(),
db_->Rollback();
db_->EndTransaction();
+ db_->Close();
} while (true);
});