//----------------------------------------------------------------------------//
// 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