54 lines
1.1 KiB
C++
54 lines
1.1 KiB
C++
#ifndef QUERY_STATEMENT_IMPL_HPP
|
|
#define QUERY_STATEMENT_IMPL_HPP
|
|
|
|
#include "matador/sql/query_context.hpp"
|
|
#include "matador/sql/query_result_impl.hpp"
|
|
#include "matador/sql/parameter_binder.hpp"
|
|
#include "matador/sql/types.hpp"
|
|
|
|
#include <memory>
|
|
|
|
namespace matador::sql {
|
|
|
|
class statement_impl
|
|
{
|
|
protected:
|
|
explicit statement_impl(query_context query);
|
|
|
|
public:
|
|
virtual ~statement_impl() = default;
|
|
|
|
virtual size_t execute() = 0;
|
|
virtual std::unique_ptr<query_result_impl> fetch() = 0;
|
|
|
|
template < class Type >
|
|
void bind(size_t pos, Type &val)
|
|
{
|
|
data_type_traits<Type>::bind_value(binder(), pos, val);
|
|
}
|
|
|
|
void bind(size_t pos, const char *value, size_t size)
|
|
{
|
|
data_type_traits<const char*>::bind_value(binder(), pos, value, size);
|
|
}
|
|
|
|
void bind(size_t pos, std::string &val, size_t size)
|
|
{
|
|
data_type_traits<std::string>::bind_value(binder(), pos, val, size);
|
|
}
|
|
|
|
virtual void reset() = 0;
|
|
|
|
protected:
|
|
virtual parameter_binder& binder() = 0;
|
|
|
|
protected:
|
|
friend class statement;
|
|
|
|
query_context query_;
|
|
};
|
|
|
|
}
|
|
|
|
#endif //QUERY_STATEMENT_IMPL_HPP
|