rendered paste body//#ifndef _DATA_BASE_H
//#define _DATA_BASE_H
#include <mysql.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
using namespace std;
const char *server_groups[]={"dr_bank","embedded","server",NULL};
class DBase {
public:
DBase();
~DBase();
//protected:
MYSQL *db_connect(const char *dbname);
void db_disconnect(MYSQL *db);
void db_do_query(MYSQL *db, const char *query);
void die(MYSQL *db, char *fmt, ...);
//private:
//MYSQL *db;
};
DBase::DBase()
{
mysql_server_init(1, (char **)"--skip-innodb",(char **)server_groups);
}
DBase::~DBase()
{
//mysql_close(db);
}
void DBase::die(MYSQL *db, char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
va_end(ap);
(void)putc('\n', stderr);
if (db)
db_disconnect(db);
exit(EXIT_FAILURE);
}
MYSQL* DBase::db_connect(const char *dbname)
{
MYSQL *con = mysql_init(NULL);
if ( !con )
die(con, "Falha no mysql_init(NULL): %s", mysql_error(con));
mysql_options(con, MYSQL_READ_DEFAULT_GROUP, "dr_bank");
if (!mysql_real_connect(con, NULL, NULL, NULL, dbname, 0, NULL, 0))
die(con, "Falha no mysql_real_connect : %s", mysql_error(con));
return con;
}
void DBase::db_disconnect(MYSQL *db)
{
mysql_close(db);
}
void DBase::db_do_query(MYSQL *db, const char *query)
{
if ( mysql_query(db, query) != 0 )
goto err;
if (mysql_field_count(db) > 0)
{
MYSQL_RES *res;
MYSQL_ROW row, end_row;
int num_fields;
if (!(res = mysql_store_result(db)))
goto err;
num_fields = mysql_num_fields(res);
while ((row = mysql_fetch_row(res)))
{
(void)fputs(">> ", stdout);
for ( end_row = row + num_fields; row < end_row; ++row)
(void)printf("%s\t", row ? (char *)*row : "NULL" );
}
(void)fputc('\n', stdout);
mysql_free_result(res);
}
else
(void)printf("Row Afetados: %lld\n", mysql_affected_rows(db));
return;
err:
die(db, "db_do_query falhou %s [%s]", mysql_error(db), query);
}
int main(int argc, char **argv)
{
DBase dbase;
MYSQL *db;
db = dbase.db_connect("dr_bank");
dbase.db_do_query(db, "SHOW TABLE");
dbase.db_disconnect(db);
return 0;
}
//#endif