MySQL++
3.3.0
|
Declares classes that implement SQL "null" semantics within C++'s type system. More...
Go to the source code of this file.
Classes | |
class | mysqlpp::null_type |
The type of the global mysqlpp::null object. More... | |
struct | mysqlpp::NullIsNull |
Class for objects that define SQL null in terms of MySQL++'s null_type. More... | |
struct | mysqlpp::NullIsZero |
Class for objects that define SQL null as 0. More... | |
struct | mysqlpp::NullIsBlank |
Class for objects that define SQL null as a blank C string. More... | |
class | mysqlpp::Null< Type, Behavior > |
Class for holding data from a SQL column with the NULL attribute. More... | |
Functions | |
template<class Type , class Behavior > | |
std::ostream & | mysqlpp::operator<< (std::ostream &o, const Null< Type, Behavior > &n) |
Inserts null-able data into a C++ stream if it is not actually null. Otherwise, insert something appropriate for null data. | |
Variables | |
const std::string | mysqlpp::null_str |
"NULL" string constant | |
const null_type | mysqlpp::null = null_type() |
Global 'null' instance. Use wherever you need a SQL null. More... | |
Declares classes that implement SQL "null" semantics within C++'s type system.
This is required because C++'s own NULL type is not semantically the same as SQL nulls.
const null_type mysqlpp::null = null_type() |
Global 'null' instance. Use wherever you need a SQL null.
SQL null is equal to nothing else. It is not the same as C++'s NULL value, it is not a Boolean false....it is unique. As such, if you use this in some other type context, you will get a compiler error saying something about CannotConvertNullToAnyOtherDataType
. The only thing you can assign this object instance to is a variable of type Null<T>, and then only directly. Code like this does not work:
The compiler will try to convert mysqlpp::null to int
to make all values in the conditional operation consistent, but this is not legal. Anyway, it's questionable code because it means you're using SQL null to mean the same thing as zero here. If zero is a special value, there's no reason to use SQL null. SQL null exists when every value for a particular column is legal and you need something that means "no legal value".