17 bind::bind(MYSQL_BIND*
b) : m_bind(b), m_is_null(0), m_error(0) {
19 memset(b, 0,
sizeof(MYSQL_BIND));
24 m_bind->buffer_type = MYSQL_TYPE_NULL;
31 set(f->type,
nullptr, f->max_length, (f->flags & UNSIGNED_FLAG) == UNSIGNED_FLAG);
37 return const_cast<char*
>(
reinterpret_cast<const char*
>(&
m_unsigned64));
46 m_bind->is_unsigned = us ? 1 : 0;
59 case MYSQL_TYPE_SHORT:
63 case MYSQL_TYPE_INT24:
68 case MYSQL_TYPE_LONGLONG:
72 case MYSQL_TYPE_FLOAT:
76 case MYSQL_TYPE_DOUBLE:
80 case MYSQL_TYPE_NEWDATE:
83 case MYSQL_TYPE_TIMESTAMP:
84 case MYSQL_TYPE_DATETIME:
86 m_bind->buffer_length =
sizeof(MYSQL_TIME);
90 case MYSQL_TYPE_DECIMAL:
91 case MYSQL_TYPE_NEWDECIMAL:
92 case MYSQL_TYPE_TINY_BLOB:
93 case MYSQL_TYPE_MEDIUM_BLOB:
94 case MYSQL_TYPE_LONG_BLOB:
97 case MYSQL_TYPE_VARCHAR:
98 case MYSQL_TYPE_VAR_STRING:
99 case MYSQL_TYPE_STRING:
104 if (buffer) memcpy(
m_bind->buffer, buffer, length);
void set(enum_field_types type, const char *buffer=nullptr, unsigned long length=0, bool us=false)
bind(MYSQL_BIND *mysql_bind)
Construct a parameter bind.
std::shared_ptr< ::mariadb::data< char > > data_ref
long unsigned int length() const