aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2012-03-31 14:16:48 +0200
committerShauren <shauren.trinity@gmail.com>2012-03-31 14:16:48 +0200
commit68fdf2a12f9baf2a31cb98435106397f9b32c4cb (patch)
tree41be91e1b539c9d1633de63a929486296f1a8488 /src
parent7efb63725853b7c2221a800bf6204dcf5635c63c (diff)
Core/DBLayer: Added missing prepared statement implementation for uint8/16
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/shared/Database/PreparedStatement.cpp46
1 files changed, 37 insertions, 9 deletions
diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp
index dd1b85f70a6..db26dabaee7 100755
--- a/src/server/shared/Database/PreparedStatement.cpp
+++ b/src/server/shared/Database/PreparedStatement.cpp
@@ -42,12 +42,20 @@ void PreparedStatement::BindParameters()
m_stmt->setBool(i, statement_data[i].data.boolean);
break;
case TYPE_UI8:
+ m_stmt->setUInt8(i, statement_data[i].data.ui8);
+ break;
case TYPE_UI16:
+ m_stmt->setUInt16(i, statement_data[i].data.ui16);
+ break;
case TYPE_UI32:
m_stmt->setUInt32(i, statement_data[i].data.ui32);
break;
case TYPE_I8:
+ m_stmt->setInt8(i, statement_data[i].data.i8);
+ break;
case TYPE_I16:
+ m_stmt->setInt16(i, statement_data[i].data.i16);
+ break;
case TYPE_I32:
m_stmt->setInt32(i, statement_data[i].data.i32);
break;
@@ -89,7 +97,7 @@ void PreparedStatement::setUInt8(const uint8 index, const uint8 value)
if (index >= statement_data.size())
statement_data.resize(index+1);
- statement_data[index].data.ui32 = value;
+ statement_data[index].data.ui8 = value;
statement_data[index].type = TYPE_UI8;
}
@@ -98,7 +106,7 @@ void PreparedStatement::setUInt16(const uint8 index, const uint16 value)
if (index >= statement_data.size())
statement_data.resize(index+1);
- statement_data[index].data.ui32 = value;
+ statement_data[index].data.ui16 = value;
statement_data[index].type = TYPE_UI16;
}
@@ -125,7 +133,7 @@ void PreparedStatement::setInt8(const uint8 index, const int8 value)
if (index >= statement_data.size())
statement_data.resize(index+1);
- statement_data[index].data.i32 = value;
+ statement_data[index].data.i8 = value;
statement_data[index].type = TYPE_I8;
}
@@ -134,7 +142,7 @@ void PreparedStatement::setInt16(const uint8 index, const int16 value)
if (index >= statement_data.size())
statement_data.resize(index+1);
- statement_data[index].data.i32 = value;
+ statement_data[index].data.i16 = value;
statement_data[index].type = TYPE_I16;
}
@@ -235,17 +243,23 @@ bool MySQLPreparedStatement::CheckValidIndex(uint8 index)
void MySQLPreparedStatement::setBool(const uint8 index, const bool value)
{
- setUInt32(index, value);
+ setUInt8(index, value ? 1 : 0);
}
void MySQLPreparedStatement::setUInt8(const uint8 index, const uint8 value)
{
- setUInt32(index, value);
+ CheckValidIndex(index);
+ m_paramsSet[index] = true;
+ MYSQL_BIND* param = &m_bind[index];
+ setValue(param, MYSQL_TYPE_TINY, &value, sizeof(uint8), true);
}
void MySQLPreparedStatement::setUInt16(const uint8 index, const uint16 value)
{
- setUInt32(index, value);
+ CheckValidIndex(index);
+ m_paramsSet[index] = true;
+ MYSQL_BIND* param = &m_bind[index];
+ setValue(param, MYSQL_TYPE_SHORT, &value, sizeof(uint16), true);
}
void MySQLPreparedStatement::setUInt32(const uint8 index, const uint32 value)
@@ -266,12 +280,18 @@ void MySQLPreparedStatement::setUInt64(const uint8 index, const uint64 value)
void MySQLPreparedStatement::setInt8(const uint8 index, const int8 value)
{
- setInt32(index, value);
+ CheckValidIndex(index);
+ m_paramsSet[index] = true;
+ MYSQL_BIND* param = &m_bind[index];
+ setValue(param, MYSQL_TYPE_TINY, &value, sizeof(int8), false);
}
void MySQLPreparedStatement::setInt16(const uint8 index, const int16 value)
{
- setInt32(index, value);
+ CheckValidIndex(index);
+ m_paramsSet[index] = true;
+ MYSQL_BIND* param = &m_bind[index];
+ setValue(param, MYSQL_TYPE_SHORT, &value, sizeof(int16), false);
}
void MySQLPreparedStatement::setInt32(const uint8 index, const int32 value)
@@ -353,12 +373,20 @@ std::string MySQLPreparedStatement::getQueryString(const char *query)
replace << (m_stmt->statement_data[i].data.boolean ? '1' : '0');
break;
case TYPE_UI8:
+ replace << uint16(m_stmt->statement_data[i].data.ui8); // stringstream will append a character with that code instead of numeric representation
+ break;
case TYPE_UI16:
+ replace << m_stmt->statement_data[i].data.ui16;
+ break;
case TYPE_UI32:
replace << m_stmt->statement_data[i].data.ui32;
break;
case TYPE_I8:
+ replace << int16(m_stmt->statement_data[i].data.i8); // stringstream will append a character with that code instead of numeric representation
+ break;
case TYPE_I16:
+ replace << m_stmt->statement_data[i].data.i16;
+ break;
case TYPE_I32:
replace << m_stmt->statement_data[i].data.i32;
break;