diff --git a/orm_lib/src/SqlBinder.cc b/orm_lib/src/SqlBinder.cc index cbed7637..bb5a8214 100644 --- a/orm_lib/src/SqlBinder.cc +++ b/orm_lib/src/SqlBinder.cc @@ -26,21 +26,19 @@ void SqlBinder::exec() if (_mode == Mode::NonBlocking) { //nonblocking mode,default mode - auto holder = std::move(_callbackHolder); - auto exceptCb = std::move(_exceptCallback); - auto exceptPtrCb = std::move(_exceptPtrCallback); - auto isExceptPtr = _isExceptPtr; //Retain shared_ptrs of parameters until we get the result; std::shared_ptr objs = std::make_shared(std::move(_objs)); _client.execSql(_sql, _paraNum, _parameters, _length, _format, - [holder, objs](const Result &r) { + [holder = std::move(_callbackHolder), objs](const Result &r) { objs->clear(); if (holder) { holder->execCallback(r); } }, - [exceptCb, exceptPtrCb, isExceptPtr](const std::exception_ptr &exception) { + [exceptCb = std::move(_exceptCallback), + exceptPtrCb = std::move(_exceptPtrCallback), + isExceptPtr = _isExceptPtr](const std::exception_ptr &exception) { //LOG_DEBUG<<"exp callback "<loop(); - auto conn = _connectionPtr; - loop->queueInLoop([conn, ucb, commitCb]() { + loop->queueInLoop([conn = _connectionPtr, ucb = std::move(_usedUpCallback), commitCb = std::move(_commitCallback)]() { conn->execSql("commit", 0, std::vector(), diff --git a/orm_lib/src/sqlite3_impl/test/test1.cc b/orm_lib/src/sqlite3_impl/test/test1.cc index 89501716..4925fd03 100644 --- a/orm_lib/src/sqlite3_impl/test/test1.cc +++ b/orm_lib/src/sqlite3_impl/test/test1.cc @@ -57,7 +57,9 @@ int main() std::cout << e.base().what() << std::endl; }; { - auto trans = clientPtr->newTransaction(); + auto trans = clientPtr->newTransaction([](bool success) { + LOG_DEBUG << (success ? "commit success!" : "commit failed!"); + }); Mapper mapper(trans); mapper.findAll([trans](const std::vector &v) {