//#ifndef _DATA_BASE_H //#define _DATA_BASE_H #include #include #include #include #include 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