From ab9dec8671eeb90230064474cf86c49c69fd8e10 Mon Sep 17 00:00:00 2001
From: znone <glyc@sina.com.cn>
Date: Wed, 27 Jun 2018 06:54:45 +0000
Subject: [PATCH] 允许用字段名绑定数据(会影响性能) 允许对同一个数据结构进行不同的绑定

---
 include/qtl_mysql.hpp |   29 +++++++++++++++++++++--------
 1 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/include/qtl_mysql.hpp b/include/qtl_mysql.hpp
index bf0ee64..e0cb34f 100644
--- a/include/qtl_mysql.hpp
+++ b/include/qtl_mysql.hpp
@@ -195,8 +195,8 @@
 {
 public:
 	error() : m_error(0) { }
-	error(int err, const char* errmsg) : m_error(err), m_errmsg(errmsg) { }
-	explicit error(int err) : m_error(err), m_errmsg(ER(err)) { }
+	error(unsigned int err, const char* errmsg) : m_error(err), m_errmsg(errmsg) { }
+	explicit error(unsigned int err) : m_error(err), m_errmsg(ER(err)) { }
 	explicit error(statement& stmt);
 	explicit error(database& db);
 	error(const error& src) = default;
@@ -204,7 +204,7 @@
 	int code() const throw() { return m_error; }
 	virtual const char* what() const throw() override { return m_errmsg.data(); }
 private:
-	int m_error;
+	unsigned int m_error;
 	std::string m_errmsg;
 };
 
@@ -444,6 +444,19 @@
 		return m_binderAddins[index].m_isNull!=0;
 	}
 
+	size_t find_field(const char* name) const
+	{
+		if(m_result)
+		{
+			for(size_t i=0; i!=m_result->field_count; i++)
+			{
+				if(strncmp(m_result->fields[i].name, name, m_result->fields[i].name_length)==0)
+					return i;
+			}
+		}
+		return -1;
+	}
+
 	void close()
 	{
 		if(m_result)
@@ -512,11 +525,11 @@
 		return &m_binders[index];
 	}
 
-	unsigned int error() 
+	unsigned int error() const
 	{
 		return mysql_stmt_errno(m_stmt);
 	}
-	const char* errmsg()
+	const char* errmsg() const
 	{
 		return mysql_stmt_error(m_stmt);
 	}
@@ -577,7 +590,7 @@
 class database final : public qtl::base_database<database, statement>
 {
 public:
-	typedef error exception_type;
+	typedef mysql::error exception_type;
 
 	database()
 	{
@@ -654,11 +667,11 @@
 		return m_mysql->db;
 	}
 
-	unsigned int error() 
+	unsigned int error() const
 	{
 		return mysql_errno(m_mysql);
 	}
-	const char* errmsg()
+	const char* errmsg() const
 	{
 		return mysql_error(m_mysql);
 	}

--
Gitblit v1.9.3