From 14337cf5b302c5385f0ae1393caf6df7e83fc539 Mon Sep 17 00:00:00 2001
From: znone <glyc@sina.com.cn>
Date: Sat, 07 Dec 2019 06:52:19 +0000
Subject: [PATCH] 1. 允许绑定字段到std::optional和std::any 2. 增加函数bind_fields可以一次绑定到多个字段 3. 查询函数返回数据库对象自身,以支持链式调用
---
test/TestMysql.cpp | 38 ++++++++++++++++++++++++++++++++++----
1 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/test/TestMysql.cpp b/test/TestMysql.cpp
index bfbcf49..6f9d922 100644
--- a/test/TestMysql.cpp
+++ b/test/TestMysql.cpp
@@ -2,6 +2,7 @@
#include "TestMysql.h"
#include <fstream>
#include <array>
+#include <iomanip>
#include "md5.h"
#include "../include/qtl_mysql.hpp"
@@ -30,9 +31,7 @@
template<>
inline void bind_record<qtl::mysql::statement, TestMysqlRecord>(qtl::mysql::statement& command, TestMysqlRecord&& v)
{
- qtl::bind_field(command, static_cast<size_t>(0), v.id);
- qtl::bind_field(command, 1, v.name);
- qtl::bind_field(command, 2, v.create_time);
+ qtl::bind_fields(command, v.id, v.name, v.create_time);
}
}
@@ -48,7 +47,8 @@
TEST_ADD(TestMysql::test_iterator)
TEST_ADD(TestMysql::test_insert_blob)
TEST_ADD(TestMysql::test_select_blob)
- //TEST_ADD(TestMysql::test_insert_stream)
+ TEST_ADD(TestMysql::test_any)
+ //TEST_ADD(TestMysql::test_insert_stream)
//TEST_ADD(TestMysql::test_fetch_stream)
}
@@ -331,6 +331,36 @@
MD5Final(result, &context);
}
+void TestMysql::test_any()
+{
+#ifdef _QTL_ENABLE_CPP17
+
+ qtl::mysql::database db;
+ connect(db);
+
+ try
+ {
+ db.query("select 0, 'hello world', now() from dual",
+ [](const std::any& i, const std::any& str, const std::any& now) {
+ const qtl::mysql::time& time = std::any_cast<const qtl::mysql::time&>(now);
+ struct tm tm;
+ time.as_tm(tm);
+ cout << "0=\"" << std::any_cast<int32_t>(i) << "\", 'hello world'=\"" <<
+ std::any_cast<const std::string&>(str) << "\", now=\"" <<
+ std::put_time(&tm, "%c") << "\" \n";
+ });
+ }
+ catch (qtl::mysql::error& e)
+ {
+ ASSERT_EXCEPTION(e);
+ }
+ catch (std::bad_cast& e)
+ {
+ ASSERT_EXCEPTION(e);
+ }
+#endif
+}
+
int main(int argc, char* argv[])
{
Test::TextOutput output(Test::TextOutput::Verbose);
--
Gitblit v1.9.3