67 bool bind(
int index, T value) noexcept
73 if constexpr (std::is_same_v<T, int>)
75 return sqlite3_bind_int(m_statement, index, value) == SQLITE_OK;
77 else if constexpr (std::is_same_v<T, std::int64_t>)
79 return sqlite3_bind_int64(m_statement, index, value) == SQLITE_OK;
81 else if constexpr (std::is_same_v<T, double>)
83 return sqlite3_bind_double(m_statement, index, value) == SQLITE_OK;
85 else if constexpr (std::is_same_v<T, bool>)
87 return sqlite3_bind_int(m_statement, index, value ? 1 : 0) == SQLITE_OK;
89 else if constexpr (std::is_same_v<T, std::string>)
91 return sqlite3_bind_text(m_statement, index, value.c_str(), -1, SQLITE_TRANSIENT) == SQLITE_OK;
103 if constexpr (std::is_same_v<T, int>)
109 return sqlite3_column_int(m_statement, index);
111 else if constexpr (std::is_same_v<T, std::int64_t>)
117 return sqlite3_column_int64(m_statement, index);
119 else if constexpr (std::is_same_v<T, double>)
125 return sqlite3_column_double(m_statement, index);
127 else if constexpr (std::is_same_v<T, bool>)
133 return static_cast<bool>(sqlite3_column_int(m_statement, index));
135 else if constexpr (std::is_same_v<T, std::string>)
141 return {
reinterpret_cast<const char*
>(sqlite3_column_text(m_statement, index)),
static_cast<size_t>(sqlite3_column_bytes(m_statement, index)) };