mirror of
https://github.com/cuberite/SQLiteCpp.git
synced 2025-08-04 09:46:02 -04:00
Merge pull request #242 from KOLANICH/efficiency_1
- Added a `getIndex` method and used it. - Improved code reuse. - Moved some functions from sources into headers.
This commit is contained in:
commit
cb421a8518
@ -121,6 +121,8 @@ public:
|
|||||||
// instead of being copied.
|
// instead of being copied.
|
||||||
// => if you know what you are doing, use bindNoCopy() instead of bind()
|
// => if you know what you are doing, use bindNoCopy() instead of bind()
|
||||||
|
|
||||||
|
int getIndex(const char * const apName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Bind an int value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind an int value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*/
|
*/
|
||||||
@ -206,11 +208,17 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @brief Bind an int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind an int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*/
|
*/
|
||||||
void bind(const char* apName, const int aValue);
|
void bind(const char* apName, const int aValue)
|
||||||
|
{
|
||||||
|
bind(getIndex(apName), aValue);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Bind a 32bits unsigned int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a 32bits unsigned int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*/
|
*/
|
||||||
void bind(const char* apName, const unsigned aValue);
|
void bind(const char* apName, const unsigned aValue)
|
||||||
|
{
|
||||||
|
bind(getIndex(apName), aValue);
|
||||||
|
}
|
||||||
|
|
||||||
#if (LONG_MAX == INT_MAX) // 4 bytes "long" type means the data model is ILP32 or LLP64 (Win64 Visual C++ and MinGW)
|
#if (LONG_MAX == INT_MAX) // 4 bytes "long" type means the data model is ILP32 or LLP64 (Win64 Visual C++ and MinGW)
|
||||||
/**
|
/**
|
||||||
@ -232,29 +240,44 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @brief Bind a 64bits int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a 64bits int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*/
|
*/
|
||||||
void bind(const char* apName, const long long aValue);
|
void bind(const char* apName, const long long aValue)
|
||||||
|
{
|
||||||
|
bind(getIndex(apName), aValue);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Bind a double (64bits float) value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a double (64bits float) value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*/
|
*/
|
||||||
void bind(const char* apName, const double aValue);
|
void bind(const char* apName, const double aValue)
|
||||||
|
{
|
||||||
|
bind(getIndex(apName), aValue);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Bind a string value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a string value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*
|
*
|
||||||
* @note Uses the SQLITE_TRANSIENT flag, making a copy of the data, for SQLite internal use
|
* @note Uses the SQLITE_TRANSIENT flag, making a copy of the data, for SQLite internal use
|
||||||
*/
|
*/
|
||||||
void bind(const char* apName, const std::string& aValue);
|
void bind(const char* apName, const std::string& aValue)
|
||||||
|
{
|
||||||
|
bind(getIndex(apName), aValue);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Bind a text value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a text value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*
|
*
|
||||||
* @note Uses the SQLITE_TRANSIENT flag, making a copy of the data, for SQLite internal use
|
* @note Uses the SQLITE_TRANSIENT flag, making a copy of the data, for SQLite internal use
|
||||||
*/
|
*/
|
||||||
void bind(const char* apName, const char* apValue);
|
void bind(const char* apName, const char* apValue)
|
||||||
|
{
|
||||||
|
bind(getIndex(apName), apValue);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Bind a binary blob value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a binary blob value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*
|
*
|
||||||
* @note Uses the SQLITE_TRANSIENT flag, making a copy of the data, for SQLite internal use
|
* @note Uses the SQLITE_TRANSIENT flag, making a copy of the data, for SQLite internal use
|
||||||
*/
|
*/
|
||||||
void bind(const char* apName, const void* apValue, const int aSize);
|
void bind(const char* apName, const void* apValue, const int aSize)
|
||||||
|
{
|
||||||
|
bind(getIndex(apName), apValue, aSize);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Bind a string value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a string value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*
|
*
|
||||||
@ -262,7 +285,10 @@ public:
|
|||||||
*
|
*
|
||||||
* @warning Uses the SQLITE_STATIC flag, avoiding a copy of the data. The string must remains unchanged while executing the statement.
|
* @warning Uses the SQLITE_STATIC flag, avoiding a copy of the data. The string must remains unchanged while executing the statement.
|
||||||
*/
|
*/
|
||||||
void bindNoCopy(const char* apName, const std::string& aValue);
|
void bindNoCopy(const char* apName, const std::string& aValue)
|
||||||
|
{
|
||||||
|
bindNoCopy(getIndex(apName), aValue);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Bind a text value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a text value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*
|
*
|
||||||
@ -270,19 +296,28 @@ public:
|
|||||||
*
|
*
|
||||||
* @warning Uses the SQLITE_STATIC flag, avoiding a copy of the data. The string must remains unchanged while executing the statement.
|
* @warning Uses the SQLITE_STATIC flag, avoiding a copy of the data. The string must remains unchanged while executing the statement.
|
||||||
*/
|
*/
|
||||||
void bindNoCopy(const char* apName, const char* apValue);
|
void bindNoCopy(const char* apName, const char* apValue)
|
||||||
|
{
|
||||||
|
bindNoCopy(getIndex(apName), apValue);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Bind a binary blob value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a binary blob value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*
|
*
|
||||||
* @warning Uses the SQLITE_STATIC flag, avoiding a copy of the data. The string must remains unchanged while executing the statement.
|
* @warning Uses the SQLITE_STATIC flag, avoiding a copy of the data. The string must remains unchanged while executing the statement.
|
||||||
*/
|
*/
|
||||||
void bindNoCopy(const char* apName, const void* apValue, const int aSize);
|
void bindNoCopy(const char* apName, const void* apValue, const int aSize)
|
||||||
|
{
|
||||||
|
bindNoCopy(getIndex(apName), apValue, aSize);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Bind a NULL value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
* @brief Bind a NULL value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
|
||||||
*
|
*
|
||||||
* @see clearBindings() to set all bound parameters to NULL.
|
* @see clearBindings() to set all bound parameters to NULL.
|
||||||
*/
|
*/
|
||||||
void bind(const char* apName); // bind NULL value
|
void bind(const char* apName) // bind NULL value
|
||||||
|
{
|
||||||
|
bind(getIndex(apName));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -63,6 +63,11 @@ void Statement::clearBindings()
|
|||||||
check(ret);
|
check(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Statement::getIndex(const char * const apName)
|
||||||
|
{
|
||||||
|
return sqlite3_bind_parameter_index(mStmtPtr, apName);
|
||||||
|
}
|
||||||
|
|
||||||
// Bind an int value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
// Bind an int value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
||||||
void Statement::bind(const int aIndex, const int aValue)
|
void Statement::bind(const int aIndex, const int aValue)
|
||||||
{
|
{
|
||||||
@ -143,97 +148,6 @@ void Statement::bind(const int aIndex)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Bind an int value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bind(const char* apName, const int aValue)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_int(mStmtPtr, index, aValue);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a 32bits unsigned int value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bind(const char* apName, const unsigned aValue)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_int64(mStmtPtr, index, aValue);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a 64bits int value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bind(const char* apName, const long long aValue)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_int64(mStmtPtr, index, aValue);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a double (64bits float) value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bind(const char* apName, const double aValue)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_double(mStmtPtr, index, aValue);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a string value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bind(const char* apName, const std::string& aValue)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_text(mStmtPtr, index, aValue.c_str(),
|
|
||||||
static_cast<int>(aValue.size()), SQLITE_TRANSIENT);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a text value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bind(const char* apName, const char* apValue)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_text(mStmtPtr, index, apValue, -1, SQLITE_TRANSIENT);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a binary blob value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bind(const char* apName, const void* apValue, const int aSize)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_blob(mStmtPtr, index, apValue, aSize, SQLITE_TRANSIENT);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a string value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bindNoCopy(const char* apName, const std::string& aValue)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_text(mStmtPtr, index, aValue.c_str(),
|
|
||||||
static_cast<int>(aValue.size()), SQLITE_STATIC);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a text value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bindNoCopy(const char* apName, const char* apValue)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_text(mStmtPtr, index, apValue, -1, SQLITE_STATIC);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a binary blob value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bindNoCopy(const char* apName, const void* apValue, const int aSize)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_blob(mStmtPtr, index, apValue, aSize, SQLITE_STATIC);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind a NULL value to a parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement
|
|
||||||
void Statement::bind(const char* apName)
|
|
||||||
{
|
|
||||||
const int index = sqlite3_bind_parameter_index(mStmtPtr, apName);
|
|
||||||
const int ret = sqlite3_bind_null(mStmtPtr, index);
|
|
||||||
check(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Execute a step of the query to fetch one row of results
|
// Execute a step of the query to fetch one row of results
|
||||||
bool Statement::executeStep()
|
bool Statement::executeStep()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user