From 2958531715494f5595887489ba693fd876d88adb Mon Sep 17 00:00:00 2001
From: znone <glyc@sina.com.cn>
Date: Fri, 20 Apr 2018 12:42:45 +0000
Subject: [PATCH] 修正在Visual Studio 2017下的编译错误。 处理连接池在连接失败时的异常。
---
include/qtl_database_pool.hpp | 9 ++++++++-
include/qtl_common.hpp | 31 ++++++++++++++++++++++++++++---
2 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/include/qtl_common.hpp b/include/qtl_common.hpp
index df0c144..e0eb972 100644
--- a/include/qtl_common.hpp
+++ b/include/qtl_common.hpp
@@ -79,6 +79,31 @@
typedef StringT string_type;
typedef typename string_type::value_type char_type;
bind_string_helper(string_type&& value) : m_value(std::forward<string_type>(value)) { }
+ bind_string_helper(const bind_string_helper& src)
+ : m_value(std::forward<std::string>(src.m_value))
+ {
+ }
+ bind_string_helper(bind_string_helper&& src)
+ : m_value(std::forward<std::string>(src.m_value))
+ {
+ }
+ bind_string_helper& operator=(const bind_string_helper& src)
+ {
+ if (this != &src)
+ {
+ m_value = std::forward<std::string>(src.m_value);
+ }
+ return *this;
+ }
+ bind_string_helper& operator=(bind_string_helper&& src)
+ {
+ if (this != &src)
+ {
+ m_value = std::forward<std::string>(src.m_value);
+ }
+ return *this;
+ }
+
void clear() { m_value.clear(); }
char_type* alloc(size_t n) { m_value.resize(n); return (char_type*)m_value.data(); }
void truncate(size_t n) { m_value.resize(n); }
@@ -859,17 +884,17 @@
template<typename... ValueProc>
void query_multi(const char* query_text, size_t text_length, ValueProc&&... proc)
{
- query_multi_with_params<std::tuple<>>(query_text, text_length, std::make_tuple(), std::forward<ValueProc>(proc)...);
+ query_multi_with_params<std::tuple<>, ValueProc...>(query_text, text_length, std::make_tuple(), std::forward<ValueProc>(proc)...);
}
template<typename... ValueProc>
void query_multi(const char* query_text, ValueProc&&... proc)
{
- query_multi_with_params<std::tuple<>>(query_text, strlen(query_text), std::make_tuple(), std::forward<ValueProc>(proc)...);
+ query_multi_with_params<std::tuple<>, ValueProc...>(query_text, strlen(query_text), std::make_tuple(), std::forward<ValueProc>(proc)...);
}
template<typename... ValueProc>
void query_multi(const std::string& query_text, ValueProc&&... proc)
{
- query_multi_with_params<std::tuple<>>(query_text.data(), query_text.size(), std::make_tuple(), std::forward<ValueProc>(proc)...);
+ query_multi_with_params<std::tuple<>, ValueProc...>(query_text.data(), query_text.size(), std::make_tuple(), std::forward<ValueProc>(proc)...);
}
template<typename Params, typename Values>
diff --git a/include/qtl_database_pool.hpp b/include/qtl_database_pool.hpp
index 1d04e2f..73ca349 100644
--- a/include/qtl_database_pool.hpp
+++ b/include/qtl_database_pool.hpp
@@ -29,7 +29,14 @@
if(m_background_thread.joinable())
{
m_stop_thread=true;
- m_background_thread.join();
+ try
+ {
+ m_background_thread.join();
+ }
+ catch (std::system_error&)
+ {
+ //igore the error
+ }
}
clear();
}
--
Gitblit v1.9.3