//----------------------------------------------------------------------------//
// dbstep_t2.cpp - This example tests transaction support.
//----------------------------------------------------------------------------//
#include <iostream>
#include <fstream>
#ifdef __BORLANDC__
#include <conio.h>
#endif
#define XML_FNAME "test_xml.xml"
#include "dbstep_test.h"
int main (int argc, char** argv)
{
// here we get driver code
int drv=getDriver(argc, argv);
// init parameter map
DBSTEP::StringMapType param_map;
try
{
if (drv == DBSTEP_FBIRD)
param_map ["dbname"] = "dbstep_test.gdb";
else
{
param_map ["dbname"] = "dbstep_test";
param_map ["host"] = "localhost";
param_map ["user"] = "dbstep_user";
param_map ["password"] = "dbstep_test";
}
param_map ["autocommit"] = "0";
// new database object
DBSTEP::Db db(drv);
// opens connection
db.openConnection(param_map);
{
TestRecord t(&db);
db.beginTransaction();
// fills TestRecord fields ...
t.name="tr_committed";
t.livel=9;
// ... and inserts the record
t.insert();
std::cout << "\nLast inserted id:" << t.id;
db.commit();
db.beginTransaction();
t.name="tr_rolled_back";
t.livel=10;
t.insert();
std::cout << "\nLast inserted id:" << t.id;
t.insert();
std::cout << "\nLast inserted id:" << t.id;
db.rollback();
// selects records, 't' acts as a cursor here
t.selectCond("ORDER BY livel");
// loops over selected records
while (t.next())
t.print();
DBSTEP::Query q(&db);
int myid=1;
q = "SELECT * from TestTable where id=", myid;
q.prepare();
}
// cleanup
db.closeConnection();
}
catch (errException e)
{
std::cout << "\nERROR: " << DBSTEP::Params::instance()->getErrManager()->first()->getName() << std::endl;
}
// cleans up
DBSTEP::Params::instance()->dispose();
#ifdef __BORLANDC__
getch();
#endif
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1