diff --git a/src/framework/luafunctions.cpp b/src/framework/luafunctions.cpp index 8de02cea..2aea5485 100644 --- a/src/framework/luafunctions.cpp +++ b/src/framework/luafunctions.cpp @@ -709,9 +709,20 @@ void Application::registerLuaFunctions() // Database g_lua.registerClass(); + // DBResult + g_lua.registerClass(); + g_lua.bindClassMemberFunction("getDataInt", &DBResult::getDataInt); + g_lua.bindClassMemberFunction("getDataLong", &DBResult::getDataLong); + g_lua.bindClassMemberFunction("getDataString", &DBResult::getDataString); + //g_lua.bindClassMemberFunction("getDataStream", &DBResult::getDataStream); + g_lua.bindClassMemberFunction("next", &DBResult::next); + // Mysql g_lua.registerClass(); g_lua.bindClassStaticFunction("create", []{ return DatabaseMySQLPtr(new DatabaseMySQL); }); g_lua.bindClassMemberFunction("connect", &DatabaseMySQL::connect); + g_lua.bindClassMemberFunction("executeQuery", &DatabaseMySQL::executeQuery); + g_lua.bindClassMemberFunction("storeQuery", &DatabaseMySQL::storeQuery); + g_lua.bindClassMemberFunction("escapeString", &DatabaseMySQL::escapeString); #endif } diff --git a/src/framework/sql/declarations.h b/src/framework/sql/declarations.h index 72b1e441..2744e201 100644 --- a/src/framework/sql/declarations.h +++ b/src/framework/sql/declarations.h @@ -25,8 +25,10 @@ #include +class DBResult; class DatabaseMySQL; +typedef stdext::shared_object_ptr DBResultPtr; typedef stdext::shared_object_ptr DatabaseMySQLPtr; #endif diff --git a/src/framework/sql/mysql.cpp b/src/framework/sql/mysql.cpp index 6eb9f644..acec629a 100644 --- a/src/framework/sql/mysql.cpp +++ b/src/framework/sql/mysql.cpp @@ -117,7 +117,7 @@ bool DatabaseMySQL::executeQuery(const std::string &query) return false; } -DBResult* DatabaseMySQL::storeQuery(const std::string &query) +DBResultPtr DatabaseMySQL::storeQuery(const std::string &query) { //LOG_ONDELAY(500); @@ -125,11 +125,11 @@ DBResult* DatabaseMySQL::storeQuery(const std::string &query) MYSQL_RES *m_res = mysql_store_result(&m_mysqlHandle); if(m_res) { - DBResult* res = new DBResult(m_res); + DBResultPtr res = DBResultPtr(new DBResult(m_res)); if(res->next()) { return res; } else { - delete res; + //delete res; break; } } else if(mysql_errno(&m_mysqlHandle) != 0) { diff --git a/src/framework/sql/mysql.h b/src/framework/sql/mysql.h index e7b12c7e..444955a3 100644 --- a/src/framework/sql/mysql.h +++ b/src/framework/sql/mysql.h @@ -24,7 +24,7 @@ public: bool commit(); bool executeQuery(const std::string &query); - DBResult* storeQuery(const std::string &query); + DBResultPtr storeQuery(const std::string &query); uint64_t getLastInsertedRowID(); @@ -41,15 +41,14 @@ protected: MYSQL m_mysqlHandle; }; -class DBResult +class DBResult : public LuaObject { -protected: +public: DBResult(MYSQL_RES* res); ~DBResult(); friend class DatabaseMySQL; -public: int32_t getDataInt(const std::string &s); int64_t getDataLong(const std::string &s); std::string getDataString(const std::string &s);