Wt: Wt::Dbo::sql_value_traits< V, Enable > Class Template Reference

Wt 3.3.0

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes

- Class List
- Class Hierarchy
- Class Members

Static Public Member Functions
Wt::Dbo::sql_value_traits< V, Enable > Class Template Reference
Database Objects (Wt::Dbo)

Traits class for value types. More...

`#include <Wt/Dbo/SqlTraits>`

List of all members.

## Static Public Member Functions
static const char * | type (SqlConnection *connection, int size)
| Returns the SQL type name.
static void | bind (const V &v, SqlStatement *statement, int index, int size)
| Binds a value to a statement parameter.
static bool | read (V &v, SqlStatement *statement, int column, int size)
| Reads a result from an executed query.

## Detailed Description

### template<typename V, class Enable = void>
class Wt::Dbo::sql_value_traits< V, Enable >

Traits class for value types.

This traits class may be specialized for a custom type `V`, to add dbo support for custom types. A value type has a one-to-one mapping to a single database column.

The library has built-in support for:

- `std::string`
- `char const *` (read-only: only as a bound parameter for a query)
- `short`, `int`, `long long`
- `long`: since the size of a `long` is 64bit on UNIX/Linux 64bit systems and 32bit otherwise, it is mapped to an `integer` or a `bigint` depending on the environment.
- `float`, `double`
- enum types
- `bool`
- `std::vector<unsigned char>` (binary data)
- `boost::optional<T>`: to make the type optional (allowing an SQL `null` value)
- `boost::posix_time::ptime`: time stamp, an invalid value (e.g. default constructed), maps to `null`
- `boost::posix_time::time_duration`: time interval, an invalid value (boost::posix_time::not_a_date_time), maps to `null`

In <Wt/Dbo/WtSqlTraits>, traits classes are also provided for:

- WDate
- WDateTime
- WTime
- WString

See also:
  query_result_traits

## Member Function Documentation

template<typename V, class Enable = void>

static void Wt::Dbo::sql_value_traits< V, Enable >::bind | ( | const V & | v,
|  | SqlStatement * | statement,
|  | int | index,
|  | int | size
| ) |  | `[static]`

Binds a value to a statement parameter.

The value `v` must be bound to parameter with index `index` in the `statement`.

See also:
  SqlStatement::bind()

template<typename V, class Enable = void>

static bool Wt::Dbo::sql_value_traits< V, Enable >::read | ( | V & | v,
|  | SqlStatement * | statement,
|  | int | column,
|  | int | size
| ) |  | `[static]`

Reads a result from an executed query.

The value `v` must be read from result column `column` in the `statement`.

Returns `true` if the value was not `null`. This result may be used by the boost::optional<V> specialization to support fields that may have `null` values.

See also:
  SqlStatement::getResult()

template<typename V, class Enable = void>

static const char* Wt::Dbo::sql_value_traits< V, Enable >::type | ( | SqlConnection * | connection,
|  | int | size
| ) |  | `[static]`

Returns the SQL type name.

The `size` (for strings) is a hint and may be ignored by a back-end.

This will usually return a type ending with " not null" except for C++ types that support `null` values. For a normal c++ value type `T`, boost::optional<T> has been specialized to allow for `null` values.

All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator