mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-01-19 03:57:14 +01:00
Implement the query execution functions on MySQL connection.
Minor adjustments in comments.
This commit is contained in:
parent
2f16d63e2a
commit
525148ccd1
@ -8,7 +8,7 @@
|
||||
namespace SqMod {
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* Allows management of the connection handle.
|
||||
* Allows management and interaction with a connection handle.
|
||||
*/
|
||||
class Connection
|
||||
{
|
||||
|
@ -1,6 +1,11 @@
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
#include "Connection.hpp"
|
||||
#include "Statement.hpp"
|
||||
#include "ResultSet.hpp"
|
||||
#include "Transaction.hpp"
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
#include <cstring>
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
namespace SqMod {
|
||||
@ -43,6 +48,24 @@ CSStr Connection::ToString() const
|
||||
return _SC("");
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
SQInteger Connection::GetErrNo() const
|
||||
{
|
||||
// Validate the managed handle
|
||||
m_Handle.Validate();
|
||||
// Return the requested information
|
||||
return static_cast< SQInteger >(mysql_errno(m_Handle));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
CSStr Connection::GetErrStr() const
|
||||
{
|
||||
// Validate the managed handle
|
||||
m_Handle.Validate();
|
||||
// Return the requested information
|
||||
return mysql_error(m_Handle);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void Connection::SetName(CSStr name)
|
||||
{
|
||||
@ -88,24 +111,50 @@ void Connection::SetAutoCommit(bool toggle)
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
SQInteger Connection::Execute(CSStr query)
|
||||
Object Connection::Execute(CSStr query)
|
||||
{
|
||||
// Validate the managed handle
|
||||
m_Handle.Validate();
|
||||
// Perform the requested operation
|
||||
return m_Handle->Execute(query);
|
||||
return MakeULongObj(m_Handle->Execute(query));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
SQInteger Connection::Insert(CSStr /*query*/)
|
||||
Object Connection::Insert(CSStr query)
|
||||
{
|
||||
return 0;
|
||||
// Validate the managed handle
|
||||
m_Handle.Validate();
|
||||
// Make sure the specified query is valid
|
||||
if (!query || *query == '\0')
|
||||
{
|
||||
STHROWF("Invalid or empty MySQL query");
|
||||
}
|
||||
// Attempt to execute the specified query
|
||||
else if (mysql_real_query(m_Handle, query, std::strlen(query)) != 0)
|
||||
{
|
||||
THROW_CURRENT(m_Handle, "Unable to execute query");
|
||||
}
|
||||
// Return the identifier of the inserted row
|
||||
return MakeULongObj(mysql_insert_id(m_Handle));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
SQInteger Connection::Query(CSStr /*query*/)
|
||||
ResultSet Connection::Query(CSStr query)
|
||||
{
|
||||
return 0;
|
||||
// Validate the managed handle
|
||||
m_Handle.Validate();
|
||||
// Make sure the specified query is valid
|
||||
if (!query || *query == '\0')
|
||||
{
|
||||
STHROWF("Invalid or empty MySQL query");
|
||||
}
|
||||
// Attempt to execute the specified query
|
||||
else if (mysql_real_query(m_Handle, query, std::strlen(query)) != 0)
|
||||
{
|
||||
THROW_CURRENT(m_Handle, "Unable to execute query");
|
||||
}
|
||||
// Return the identifier of the inserted row
|
||||
return ResultSet(ResHnd(m_Handle));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
@ -117,4 +166,10 @@ Statement Connection::GetStatement(CSStr query)
|
||||
return Statement(m_Handle, query);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
Transaction Connection::GetTransaction()
|
||||
{
|
||||
return Transaction();
|
||||
}
|
||||
|
||||
} // Namespace:: SqMod
|
||||
|
@ -8,7 +8,7 @@
|
||||
namespace SqMod {
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* ...
|
||||
* Allows management and interaction with a connection handle.
|
||||
*/
|
||||
class Connection
|
||||
{
|
||||
@ -50,7 +50,10 @@ public:
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Destructor.
|
||||
*/
|
||||
~Connection() = default;
|
||||
~Connection()
|
||||
{
|
||||
// Let the handle deal with closing the connection if necessary
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copy assignment operator.
|
||||
@ -133,6 +136,16 @@ public:
|
||||
m_Handle->Disconnect();
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Retrieve the current error number.
|
||||
*/
|
||||
SQInteger GetErrNo() const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Retrieve the current error message.
|
||||
*/
|
||||
CSStr GetErrStr() const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Retrieve the last received error number.
|
||||
*/
|
||||
@ -338,22 +351,27 @@ public:
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Execute a query on the server.
|
||||
*/
|
||||
SQInteger Execute(CSStr query);
|
||||
Object Execute(CSStr query);
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Execute a query on the server.
|
||||
*/
|
||||
SQInteger Insert(CSStr query);
|
||||
Object Insert(CSStr query);
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Execute a query on the server.
|
||||
*/
|
||||
SQInteger Query(CSStr query);
|
||||
ResultSet Query(CSStr query);
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
*
|
||||
* Create a new statement on the managed connection.
|
||||
*/
|
||||
Statement GetStatement(CSStr query);
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Create a new transaction on the managed connection.
|
||||
*/
|
||||
Transaction GetTransaction();
|
||||
};
|
||||
|
||||
} // Namespace:: SqMod
|
||||
|
@ -219,6 +219,8 @@ void RegisterAPI(HSQUIRRELVM vm)
|
||||
.Func(_SC("_tostring"), &Connection::ToString)
|
||||
// Properties
|
||||
.Prop(_SC("Connected"), &Connection::Connected)
|
||||
.Prop(_SC("ErrNo"), &Connection::GetErrNo)
|
||||
.Prop(_SC("ErrStr"), &Connection::GetErrStr)
|
||||
.Prop(_SC("LastErrNo"), &Connection::GetLastErrNo)
|
||||
.Prop(_SC("LastErrStr"), &Connection::GetLastErrStr)
|
||||
.Prop(_SC("Port"), &Connection::GetPortNum)
|
||||
@ -242,6 +244,8 @@ void RegisterAPI(HSQUIRRELVM vm)
|
||||
.Func(_SC("Execute"), &Connection::Execute)
|
||||
.Func(_SC("Insert"), &Connection::Insert)
|
||||
.Func(_SC("Query"), &Connection::Query)
|
||||
.Func(_SC("Statement"), &Connection::GetStatement)
|
||||
.Func(_SC("Transaction"), &Connection::GetTransaction)
|
||||
);
|
||||
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
namespace SqMod {
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* Allows management and interaction with a result set.
|
||||
* Allows management and interaction with a result set handle.
|
||||
*/
|
||||
class ResultSet
|
||||
{
|
||||
|
@ -8,7 +8,7 @@
|
||||
namespace SqMod {
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* ...
|
||||
* Allows management and interaction with a statement handle.
|
||||
*/
|
||||
class Statement
|
||||
{
|
||||
|
@ -8,9 +8,49 @@
|
||||
namespace SqMod {
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
*
|
||||
* ...
|
||||
*/
|
||||
class Transaction
|
||||
{
|
||||
public:
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Default constructor.
|
||||
*/
|
||||
Transaction()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copy constructor. (disabled)
|
||||
*/
|
||||
Transaction(const Transaction & o) = delete;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Move constructor. (disabled)
|
||||
*/
|
||||
Transaction(Transaction && o) = default;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Destructor.
|
||||
*/
|
||||
~Transaction()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copy assignment operator. (disabled)
|
||||
*/
|
||||
Transaction & operator = (const Transaction & o) = delete;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Move assignment operator. (disabled)
|
||||
*/
|
||||
Transaction & operator = (Transaction && o) = default;
|
||||
|
||||
};
|
||||
|
||||
} // Namespace:: SqMod
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user