A_DBC API


Example program


#include <db/a_dbc.h>   //A_DBC h
#include <mad/prop.h>   //Properties class h

//#define TODO exec
#define TODO select

//Enter data record into Properties,
//Needs by demo...
void dbcGet(ADBC *dbc, Properties *p){
   for (unsigned int i = 0; i < dbc->getFieldCount(); i++){
      p->put(dbc->getFieldName(i), dbc->getFieldData(i));
   }
}

//Database select and parse results.
void select(ADBC *db, Properties *q){
   printf(">OPEN...\n");
   
   //Open dataset
   if (!db->open()){
      printf("Error\n");
      exit(1);
   }

   //Print general data
   printf("Database matrix (cols) x (rows): (%d) x (%ld)\n",
          db->getFieldCount(),
          db->getRecordCount() );

   //Show all records...
   while (!db->eof()){
      dbcGet(db, q);
      q->dump();
      db->next();
   }
 
   //Close dataset
   db->close();
}

//Exec SQL, no data.
void exec(ADBC *db){
   printf(">Exec SQL...\n");
   
   //Exec SQL
   if (!db->exec()){
      printf("Error\n");
      exit(1);
   }
   
   //Print general data
   printf("Affect %ld row(s)\n", db->getAffectedCount());
}

//Main program
int main(void){
//Init MFC, if we using Microsoft Fondation Classes (MFC/ODBC driver)
#ifdef __MFC__
   if (!initMFC()){
      printf("content-type: text/plain\n\nMFC Crashed\nOh, dear!\n"); 
      exit(100);
   }
#endif

   //Print this for web environment
   printf("content-type: text/plain\n\n");  //for web testing

   //Properties for connection to the database 
   Properties *p = new Properties();
   
   //Properties for demo only
   Properties *q = new Properties();
   
   //Seting Database properties, they are depend of database
   //These are for Interbase
   p->put("DATABASE", "/usr/interbase/examples/v4/employee.gdb" );
   p->put("DATABASEUSER", "SYSDBA");
   p->put("DATABASEPASS", "masterkey"); //OK, everyone know it:)

   printf(">CREATE...\n");

   //Database connection object
   ADBConnection *dbcon = getADBConnection();

   printf(">CONNECT...\n");
   
   //Trying to connect, checking result...
   if (!dbcon->connect(p)){
      printf("Error\n");
      exit(1);
   }

   //ADBC object for SQL
   ADBC *db = dbcon->getADBC();

   printf(">SQL...\n");

   //Put Some SQL here...defined at the top
#if (TODO != exec)
   db->setSQL("select * from ta");
#else
   db->setSQL("Insert into ta values(123, 'nmmm', 'Bulgaria')");
#endif

   //Do operation...defined at the top
   TODO(db, q);

   //Destroy ADBC object
   delete(db);
   
   printf(">Disconnect...\n");

   //Disconnect
   dbcon->disconnect();

   //Clean up and destroy
   delete(dbcon);
   delete(p);
   delete(q);

   printf(">Exit\n");

   //Everything is OK, so return 0
   return 0;
}