This class is used for fetching data from single row. It receives the result from [`dbixx::session`](/wikipp/en/page/ref_dbixx_session) or [`dbixx::result`](/wikipp/en/page/ref_dbixx_result). |
|
- [General Functions](#gen) |
- [Retrieving information about fields](#finfo) |
- [Retrieving actual data](#data) |
- [Automatic Casting](#cast) |
|
## <span id="gen"></span>General Functions |
|
bool isempty(); |
dbi_result get_dbi_result() |
|
`isempty()` checks if the output set of the query was empty. |
|
dbixx::row r |
sql<<"SELECT id FROM users WHERE name='nobody'",r; |
if(!r.isempty()) { // there is nobody in list!!! |
|
`get_dbi_result()` returns underlying `dbi_result` that |
allows accessing libdbi features that are not available |
from DbiXX Library |
|
## <span id="finfo"></span>Retrieving information about fields |
|
unsigned int cols(); |
bool isnull(int inx); |
bool isnull(std::string const &id); |
bool operator[](int ind); |
bool operator[](std::string const & id) ; |
unsigned int cols(); |
bool isnull(int inx); |
bool isnull(std::string const &id); |
bool operator[](int ind); |
bool operator[](std::string const & id) ; |
|
Function `cols()` returns number of columns in the row. `isnull()` returns if specific filed is null, using it's column number (starting from 1) or column name; |
|
`bool operator[]` is just syntactic sugar for `isnull()`. |
|
For example: |
|
row r; |
sql<<"SELECT password " |
"FROM users WHERE username=?",name,r; |
if(!r.isempty() && r.isnull("password")) { |
// login without password |
|
## <span id="data"></id>Retrieving actual data |
|
The operation for retrieving the data are following: |
|
bool fetch(int idx,int &value); |
bool fetch(int idx,unsigned &value); |
bool fetch(int idx,long long &value); |
bool fetch(int idx,unsigned long long &value); |
bool fetch(int idx,double &value); |
bool fetch(int idx,std::string &value); |
bool fetch(int idx,std::tm &value); |
|
template<typename T> |
row &operator>>(T &v); |
|
Function `fetch`, retrieves the value from column `idx` into value. And returns `true` if the value is **not** null. |
|
Operator `>>` allows fetch data from all columns sequentially starting from column number 1. |
|
For example: |
|
dbixx::row r; |
sql<<"SELECT name,age,birthday " |
"FROM person WHERE id=?",id; |
if(sql.single(r)) { |
int age; |
string name; |
std::tm birth; |
r >> name >> age >>birth; |
// Do something |
} |
|
## <span id="cast"></span>Automatic Casting |
|
If data type does not mutch, DbiXX tries to cast data |
to appropriate type, thus you can retrieve double with |
integer or even string. This is done mostly for |
"typeless" backends like sqlite3 where strict casting |
may cause unexpected errors. |
|
If casting fails, `dbixx::dbixx_error` is thrown. |