71 bool bind(
int index, T value) noexcept
77 if constexpr (std::is_same_v<T, int>)
79 return sqlite3_bind_int(m_statement, index, value) == SQLITE_OK;
81 else if constexpr (std::is_same_v<T, std::int64_t>)
83 return sqlite3_bind_int64(m_statement, index, value) == SQLITE_OK;
85 else if constexpr (std::is_same_v<T, double>)
87 return sqlite3_bind_double(m_statement, index, value) == SQLITE_OK;
89 else if constexpr (std::is_same_v<T, bool>)
91 return sqlite3_bind_int(m_statement, index, value ? 1 : 0) == SQLITE_OK;
93 else if constexpr (std::is_same_v<T, std::string>)
95 return sqlite3_bind_text(m_statement, index, value.c_str(), -1, SQLITE_TRANSIENT) == SQLITE_OK;
107 if constexpr (std::is_same_v<T, int>)
113 return sqlite3_column_int(m_statement, index);
115 else if constexpr (std::is_same_v<T, std::int64_t>)
121 return sqlite3_column_int64(m_statement, index);
123 else if constexpr (std::is_same_v<T, double>)
129 return sqlite3_column_double(m_statement, index);
131 else if constexpr (std::is_same_v<T, bool>)
137 return static_cast<bool>(sqlite3_column_int(m_statement, index));
139 else if constexpr (std::is_same_v<T, std::string>)
145 return {
reinterpret_cast<const char*
>(sqlite3_column_text(m_statement, index)),
static_cast<size_t>(sqlite3_column_bytes(m_statement, index)) };