Main  /  Edit version 3  /  Edit version 4  /   /  Users Area

Difference "Starting with DbiXX" ver. 3 versus ver. 4

Content:

DbiXX is not mandatory part of CppCMS framework, it is just a general purpose library for executing SQL queries in safe way.
DbiXX is not a mandatory part of the CppCMS framework; it is just a general purpose library to execute SQL queries in a safe way.
Let's see a simple example:
#include <dbixx/dbixx.h>
#include <iostream>
using namespace dbixx;
using namespace std;
int main()
{
try {
session sql("sqlite3");
sql.param("dbname","test.db");
sql.param("sqlite3_dbdir","./");
sql.connect();
sql<<"DROP TABLE IF EXISTS users";
sql.exec();
sql<<"CREATE TABLE users ( "
" id integer primary key not null, "
" name varchar(128) not null "
");";
sql.exec();
sql<<"INSERT INTO users(id,name) VALUES(?,?)",
1,"Moshe",exec();
sql<<"INSERT INTO users(id,name) VALUES(?,?)",
2,"Yossi",exec();
sql<<"SELECT name FROM users WHERE id=?",1;
row r;
if(sql.single(r)) {
string name;
r>>name;
cout<<name<<endl;
}
else {
cout<<"No user with id="<<1<<endl;
}
result res;
sql<<"SELECT id,name FROM users";
sql.fetch(res);
cout<<"There are "<<res.rows()<<" users\n";
while(res.next(r)) {
int id;
string name;
r>>id>>name;
cout<<id<<"\t"<<name<<endl;
}
}
catch(std::exception const &e) {
cerr<<e.what()<<endl;
return 1;
}
return 0;
}
First we create a sql session object and load driver "sqlite3", then we setup all mandatory parameters needed by sqlite3 driver and create connection.
First we create a sql session object and load the driver "sqlite3". Then we setup all the mandatory parameters needed by the driver and create a connection.
session sql("sqlite3");
sql.param("dbname","test.db");
sql.param("sqlite3_dbdir","./");
sql.connect();
Then we perform queries. First we prepare them using
"iostreams like" style:
sql<<"DROP TABLE IF EXISTS users";
and then execute an operation:
and then execute the operation:
sql.exec();
There is a syntactic sugar for this operation:
sql<<"DROP TABLE IF EXISTS users",exec();
Then we want to execute some command using parameters
Then we want to execute some commands using parameters
binding:
sql<<"INSERT INTO users(id,name) VALUES(?,?)",
1,"Moshe",exec();
First we load our query. Each "?" represents binded parameter. Then, using overloaded comma operator we bind actual values: integer "1" and string "Moshe". Note: every binded string is automatically escaped.
First we load our query. Each "?" represents a bound parameter. Then, using overloaded comma operator, we bind actual values: integer "1" and string "Moshe". Note: every bound string is automatically escaped.
Now we want to fetch single row of data. First, we bind query and its parameters as before.
Now we want to fetch a single row of data. First, we bind the query and its parameters as before.
sql<<"SELECT name FROM users WHERE id=?",1;
But now, we store output data in single row class.
But now, we store the output data in a single row class.
row r;
if(sql.single(r)) {
If the result of select wasn't empty set, the condition is true and we can readout data from the row, using "iostreams" like interface.
If the result wasn't an empty set, the condition is true and we can readout the data from the row, using the "iostreams" like interface.
r>>name;
Now, we want to fetch some bigger data set. In this case we
use class result that stores the output data. We use:
use the class result that stores the output data. We use:
result res;
sql.fetch(res);
Now we can find out the number of the rows calling `res.rows()` and iterate over each row calling `res.next(r)`.
Now we can find out the number of rows calling `res.rows()` and iterate over each row calling `res.next(r)`.
Now, you can read the full [DbiXX Library API](http://art-blog.no-ip.info/wikipp/en/page/ref_dbixx)

About

CppCMS is a web development framework for performance demanding applications.

Support This Project

SourceForge.net Logo

Поддержать проект

CppCMS needs You


Navigation

Main Page


Valid CSS | Valid XHTML 1.0