Ejemplo n.º 1
0
bool verificar_tablas(MYSQL *my_con)
{
    std::vector<std::string>    tablas, creates;

    if(!leer_tablas("c:/prog/test/mydb.dat", tablas, creates))
    {
        std::cout << "Error leyendo las tablas." << std::endl;
        return -1;
    }

    for(size_t i = 0; i < tablas.size(); ++i) {

        if(!existe_tabla(my_con, tablas[i])) {
            // Creamos la tabla.
            std::cout << "Creamos la tabla: " << tablas[i] << std::endl;

            if(mysql_query(my_con, creates[i].c_str())) {
                std::string err_string("Error al crear la tabla " + tablas[i]);
                print_mysql_error(my_con, err_string);
            }
        }
        else {
            std::cout << "La tabla " << tablas[i] << " ya existe." << std::endl;
        }

    }

    std::cout << "Salimos de verificar_tablas()." << std::endl;

    return true;
}
Ejemplo n.º 2
0
/**
 * 获取当天操作纪录信息
 */
int
get_cur_history() {

	char sql[MAX_BUF_SIZE];
    memset(sql, 0, sizeof(sql));

	time_t cur_time = time(NULL);		//获取系统当前时间并格式化

	struct tm *timeinfo;
	timeinfo = localtime(&cur_time);

	char date[MAX_BUF_SIZE];
	memset(date, 0, sizeof(date));

	strftime (date, sizeof(date), "history_%Y%m%d", timeinfo);



	sprintf(sql, "SELECT * FROM `%s`", date);


	if (mysql_query(g_conn, sql)){
    	 print_mysql_error(NULL);
    	 return EXIT_FAILURE;
    }

    g_res = mysql_store_result(g_conn); //从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	print_result();		//打印
	free_result();		//释放结果集

    return EXIT_SUCCESS;

}
Ejemplo n.º 3
0
/*
 * 切换当前目录
 */
char*
get_directory_id(char* diskName,char* dirName,char* parentId){

	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));
	sprintf(sql,"SELECT directory_id FROM `directory_info` WHERE disk_name = '%s' AND directory_name = '%s' AND parent_id = '%s'", diskName,dirName,parentId);

	if(mysql_query(g_conn,sql))
	{
		print_mysql_error(NULL);
	}

	g_res = mysql_store_result(g_conn);

	char dirId[MAX_BUF_SIZE];
	memset(dirId, 0, sizeof(dirId));
	if((g_row = mysql_fetch_row(g_res)))//符合条件的目录存在
	{
		sprintf(dirId, "%s",g_row[0]);
		return dirId;
	}

	sprintf(dirId,"%s","false");

	return dirId;
}
Ejemplo n.º 4
0
/**
 * 获取所有的操作纪录信息
 */
int
get_all_history() {

    char sql[MAX_BUF_SIZE];
    memset(sql, 0, sizeof(sql));

    GetProfileString("./etc/ast3_db_info.conf", "DB_INFO", "DBName", db_name);
    sprintf(sql, "SELECT table_name FROM information_schema.tables WHERE table_schema='%s' AND table_type='base table' AND table_name LIKE 'history_%s'", db_name, "%");

    if (mysql_query(g_conn, sql)){
    	 print_mysql_error(NULL);
    	 return EXIT_FAILURE;
    }

    g_res = mysql_store_result(g_conn); //从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	char *tbName = (char *) malloc(MAX_BUF_SIZE);
	while ((g_row = mysql_fetch_row(g_res))) {
		sprintf(tbName, "%s", g_row[0]);   //获取记录数

		//	char sql[MAX_BUF_SIZE];
		memset(sql, 0, sizeof(sql));
		sprintf(sql, "SELECT * FROM `%s`", tbName);

		if (mysql_query(g_conn, sql)){
			 print_mysql_error(NULL);
			 return EXIT_FAILURE;
		}

		MYSQL_RES *history; // mysql 记录集
		history = mysql_store_result(g_conn); //从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

		int i;
		while ((g_row = mysql_fetch_row(history))) {
			for(i=0; i<mysql_num_fields(history); i++){
				printf("%s\t", g_row[i]);
			}
			printf("\n");
		}

		mysql_free_result(history);

	}

	return EXIT_SUCCESS;
}
Ejemplo n.º 5
0
bool actualizar_clientes(MYSQL *my_con, std::vector<Cliente> &lista_clientes)
{
    MYSQL_STMT          *stmt;          // Manejador de la consulta preparada.
    MYSQL_BIND          my_bind[14];    // Estructura para los datos de la consulta.
    data_bind_storage   cmb(db_consts::cliente_nc_txt,      // Reservamos espacio para
                            db_consts::cliente_nc_int,      // almacenar los datos
                            db_consts::cliente_max_txt);    // de un cliente.

    // Ponemos la estructura para los datos a 0.
    std::memset(static_cast<void *>(my_bind), 0, sizeof(my_bind));

    // Reservamos manejador
    if((stmt = mysql_stmt_init(my_con)) == NULL)
    {
        print_mysql_error(my_con, "Imposible inicializar el manejador de la consulta.");
        return false;
    }

    // Preparamos la consulta.
    if(mysql_stmt_prepare(stmt, db_queries::upd_cliente.c_str(), db_queries::upd_cliente.size()) != 0)  {
        print_mysql_stmt_error(stmt, "Imposible preparar consulta UPDATE.");
        return false;
    }

    // Asociamos la estructura my_bind al almacen de datos.
    set_mysql_bind(my_bind, cmb, db_binds::cliente_upd_bind);

    // Asociamos los datos a la consulta.
    if(mysql_stmt_bind_param(stmt, my_bind) != 0) {
        print_mysql_stmt_error(stmt, "Imposible asociar los datos a la consulta.");
        return false;
    }

    int i = 1;
    for(auto &&c : lista_clientes) {
        std::cout << "\rActualizando " << lista_clientes.size() << " clientes... ";
        std::cout << utiles::to_string(i, 6, ' ') << "/" << utiles::to_string(lista_clientes.size(), 6, ' ');

        // Rellenamos el "receptaculo" con los datos del cliente. La estructura
        // my_bind está asociada a esta otra estructura, luego la consulta enviará
        // los datos de esta estructura a traves de la estructura my_bind.
        c.fill_mysql_bind(cmb);

        // Procesamos la consulta con los datos.
        if(mysql_stmt_execute(stmt) != 0) {
            print_mysql_stmt_error(stmt, "Imposible ejecutar consulta preparada.");
            return false;
        }

        ++i;
    }

    std::cout << "\tHecho.\n\n";

    mysql_stmt_close(stmt);

    return true;
}
Ejemplo n.º 6
0
//插入NAT记录
void DbServer::addNat(char* nat_id,char *dport_str){
    char sql[300];
    int id = atoi(nat_id);
    int dport = atoi(dport_str);
    sprintf(sql,"update other_nat set dport='%d',state=1 where id='%d'",dport,id);    
    if(executesql(sql))
        print_mysql_error(NULL);
    else
        printf("insert other_nat success! \n");
}
Ejemplo n.º 7
0
/**
 * 记录操作日志
 */
int
insert_history(char* operation) {

	char sql[MAX_BUF_SIZE];
    memset(sql, 0, sizeof(sql));

	time_t cur_time = time(NULL);		//获取系统当前时间并格式化

	struct tm *timeinfo;
	timeinfo = localtime(&cur_time);

	char date[MAX_BUF_SIZE];
	memset(date, 0, sizeof(date));

	strftime(date, sizeof(date), "history_%Y%m%d", timeinfo);

	char time[MAX_BUF_SIZE];
	memset(time, 0, sizeof(time));

	strftime(time, sizeof(time), "%F %T", timeinfo);
	sprintf(sql, "CREATE TABLE IF NOT EXISTS `%s` ( `id` int(11) NOT NULL AUTO_INCREMENT, `operation` varchar(255) NOT NULL,`time` datetime NOT NULL, PRIMARY KEY (`id`))", date);


	if (mysql_query(g_conn, sql)){
    	 print_mysql_error(NULL);
    	 return EXIT_FAILURE;
    }

	//插入数据
	memset(sql, 0, sizeof(sql));
	sprintf(sql, "INSERT INTO `%s`(operation, time)VALUES ('%s', '%s')", date, operation, time);


	if (mysql_query(g_conn, sql)){
    	 print_mysql_error(NULL);
    	 return EXIT_FAILURE;
    }


    return EXIT_SUCCESS;

}
Ejemplo n.º 8
0
/**
 * 插入目录信息
 */
int
insert_directory(db_directory_info *directory_info){

      if (db_directory_info__insert (directory_info) != 0){
    	  print_mysql_error(NULL);
          return EXIT_FAILURE;
       }

      printf("insert data into directory_info successfully\n");
      return EXIT_SUCCESS;
  }
Ejemplo n.º 9
0
/**
 * 插入文件信息
 */
int
insert_file(db_file_info *file_info){

      if (db_file_info__insert (file_info) != 0){
    	  print_mysql_error(NULL);
          return EXIT_FAILURE;
       }

      printf("insert data into file_info successfully\n");
      return EXIT_SUCCESS;
  }
Ejemplo n.º 10
0
int update_datos_cliente(MYSQL *my_con, const Cliente &c)
{
    std::string     consulta = c.get_mysql_update_str();

    if(mysql_query(my_con, consulta.c_str()) != 0) {
        print_mysql_error(my_con, "Fallo al actualizar cliente.");
        return 1;
    }

    return 0;
}
Ejemplo n.º 11
0
/**
 * 根据位置查询文件信息
 */
int
query_file_by_curr_location(char* diskName,char* dirId,char *start_ra, char *end_ra, char *start_dec, char *end_dec){

	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));
	sprintf(sql, "SELECT * FROM `file_info` Where ra_val >= '%s' AND ra_val <= '%s' AND dec_val >= '%s' AND dec_val <= '%s' AND disk_name = '%s' AND directory_id = '%s'",
			start_ra, end_ra, start_dec, end_dec,diskName,dirId);

	if (mysql_query(g_conn, sql)){
		 print_mysql_error(NULL);
	}

	g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集
    print_result();
    free_result();

    memset(sql,0,sizeof(sql));
    sprintf(sql,"SELECT directory_id FROM 'directory_info' WHERE disk_name = '%s' AND parent_id = '%s'",diskName,dirId);

    if(mysql_query(g_conn,sql)){
    	print_mysql_error(NULL);
    }

    g_res = mysql_store_result(g_conn);

    int i;
    char* childId = (char*)malloc(MAX_BUF_SIZE);

    while((g_row = mysql_fetch_row(g_res)))
    {
    	for(i = 0; i < get_fields(g_res); i++)
    	{
    		memset(childId,0,sizeof(childId));
    		sprintf(childId,"%s",g_row[i]);
    		query_file_by_curr_location(diskName,childId,start_ra,end_ra,start_dec,end_dec);
    	}
    }

	return EXIT_SUCCESS;
}
Ejemplo n.º 12
0
/**
 * 查询目录内文件和目录详细信息
 */
int
query_directory_primary_info(char *diskName, char *dirId){

	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));
	sprintf(sql, "SELECT file_id,file_name,file_size,time,permission FROM `file_info` Where disk_name = '%s' AND directory_id = '%s'", diskName, dirId);

	if (mysql_query(g_conn, sql)){
		 print_mysql_error(NULL);
	}

	g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	return EXIT_SUCCESS;
}
Ejemplo n.º 13
0
/**
 * 根据时间查询文件信息
 */
int
query_file_by_time(char *start_time, char * end_time){

	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));
	sprintf(sql, "SELECT * FROM `file_info` Where time >= '%s' AND time <= '%s'", start_time, end_time);

	if (mysql_query(g_conn, sql)){
		 print_mysql_error(NULL);
	}

	g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	return EXIT_SUCCESS;
}
Ejemplo n.º 14
0
/**
 * 查询所有硬盘详细信息
 */
int
query_all_disks(){

    char sql[MAX_BUF_SIZE];
    memset(sql, 0, sizeof(sql));
    sprintf(sql, "SELECT * FROM `disk_info`");

    if (mysql_query(g_conn, sql)){
    	 print_mysql_error(NULL);
    }

    g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

    return EXIT_SUCCESS;
}
Ejemplo n.º 15
0
/**
 * 查询所有硬盘基本信息--id,name,容量,权限,状态
 */
int
query_primary_disks(){

    char sql[MAX_BUF_SIZE];
    memset(sql, 0, sizeof(sql));
    sprintf(sql, "SELECT disk_id,disk_name,permission,disk_capacity,disk_status FROM `disk_info`");

    if (mysql_query(g_conn, sql)){
    	 print_mysql_error(NULL);
    }

    g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

    return EXIT_SUCCESS;
}
Ejemplo n.º 16
0
/**
 * 查询文件信息
 */
int
query_file_info(char *fileName, char *dirName, char *diskName){

	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));
	sprintf(sql, "SELECT * FROM `file_info` Where file_name = '%s' AND directory_name = '%s' AND disk_name = '%s'", fileName, dirName, diskName);

	if (mysql_query(g_conn, sql)){
		 print_mysql_error(NULL);
	}

	g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	return EXIT_SUCCESS;
}
Ejemplo n.º 17
0
/**
 * 根据位置查询文件信息
 */
int
query_file_by_location(char *start_ra, char *end_ra, char *start_dec, char *end_dec){

	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));
	sprintf(sql, "SELECT * FROM `file_info` Where ra_val >= '%s' AND ra_val <= '%s' AND dec_val >= '%s' AND dec_val <= '%s'",
			start_ra, end_ra, start_dec, end_dec);

	if (mysql_query(g_conn, sql)){
		 print_mysql_error(NULL);
	}

	g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	return EXIT_SUCCESS;
}
Ejemplo n.º 18
0
/**
 * 返回指定ID的目录
 */
char*
return_directory(char *dirID, char *diskName){

	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));
	sprintf(sql, "SELECT directory_name FROM `directory_info` Where directory_id = '%s' AND disk_name = '%s'", dirID, diskName);

	if (mysql_query(g_conn, sql)){
		 print_mysql_error(NULL);
	}

	g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	char *directory = (char *) malloc(MAX_BUF_SIZE);
	int i;
	g_row = mysql_fetch_row(g_res);
	sprintf(directory,"%s", g_row[i]);

	return directory;
}
Ejemplo n.º 19
0
/**
 * 更新文件信息
 * 包括 `recent_use_time`, `accessed_time`
 */
void
update_file(db_file_info *file_info){
	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));

	//格式化时间
	struct tm * tm_local = localtime(&file_info->recent_use_time);
	char str_f_t [MAX_BUF_SIZE];
	strftime(str_f_t, sizeof(str_f_t), "%G-%m-%d %H:%M:%S", tm_local);

	sprintf(sql, "UPDATE `file_info` SET recent_use_time = '%s', accessed_time = %d WHERE  file_id = %d",
			str_f_t, file_info->accessed_time, file_info->file_id);


	int res = mysql_query(g_conn, sql);
	if (!res) {
		printf("Update %lu rows\n", (unsigned long)mysql_affected_rows(g_conn));
	} else {
		print_mysql_error(NULL);
	}
}
Ejemplo n.º 20
0
/**
 * 获取父目录ID
 * 已知当前目录ID
 */
char*
get_parent_id(char *dirId){


	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));
	sprintf(sql, "SELECT parent_id FROM 'directory_info' WHERE directory_id = '%s'",dirId);

	if(mysql_query(g_conn,sql)){
		print_mysql_error(NULL);
	}
	g_res = mysql_store_result(g_conn);// 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	char *parentId = (char*)malloc(MAX_BUF_SIZE);
	if((g_row = mysql_fetch_row(g_res)))
	{
		sprintf(parentId,"%s",g_row[0]);
	}

	return parentId;
}
Ejemplo n.º 21
0
/**
 * 更新磁盘信息
 * 包括 `disk_used`, `recent_use_time`, `disk_status`
 */
void
update_disk(db_disk_info *disk_info) {

	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));

	//格式化时间
	struct tm * tm_local = localtime(&disk_info->recent_use_time);
	char str_f_t [MAX_BUF_SIZE];
	strftime(str_f_t, sizeof(str_f_t), "%G-%m-%d %H:%M:%S", tm_local);

    sprintf(sql, "UPDATE `disk_info` SET disk_used = %d, recent_use_time = '%s', disk_status = %d WHERE  disk_id = %d",
    		disk_info->disk_used, str_f_t, disk_info->disk_status, disk_info->disk_id);


	int res = mysql_query(g_conn, sql);
	if (!res) {
		printf("Update %lu rows\n", (unsigned long)mysql_affected_rows(g_conn));
	} else {
		print_mysql_error(NULL);
	}
}
Ejemplo n.º 22
0
bool existe_cliente(MYSQL *my_con, int codigo_cliente)
{
    std::string consulta = "SELECT * FROM CLIENTE WHERE cod_cliente=" + utiles::IntToStr(codigo_cliente, 6);
    MYSQL_RES   *my_res;
    bool        valor_ret = false;

    if(mysql_query(my_con, consulta.c_str()) != 0) {
        std::string err_string("Fallo al consultar existencia del cliente " + utiles::IntToStr(codigo_cliente, 6));
        print_mysql_error(my_con, err_string);

        valor_ret = false;
    }
    else {
        if((my_res = mysql_store_result(my_con)) != NULL) {
            // Procesar resultados
            if(mysql_num_rows(my_res) != 0) valor_ret = true;
            // Liberar el resultado de la consulta:
            mysql_free_result(my_res);
        }
    }

    return valor_ret;
}
Ejemplo n.º 23
0
bool existe_tabla(MYSQL *my_con, std::string &tabla)
{
    std::string consulta = "SHOW TABLES FROM sepyadb LIKE \'" + tabla + "\'";
    MYSQL_RES   *my_res;
    bool        valor_ret = true;

    if(mysql_query(my_con, consulta.c_str()) != 0) {
        std::string err_string("Fallo al consultar existencia de la tabla " + tabla);
        print_mysql_error(my_con, err_string);

        valor_ret = false;
    }
    else {
        if((my_res = mysql_store_result(my_con)) != NULL) {
            // Procesar resultados
            if(!mysql_num_rows(my_res)) valor_ret = false;
            // Liberar el resultado de la consulta:
            mysql_free_result(my_res);
        }
    }

    return valor_ret;
}
Ejemplo n.º 24
0
/**
 * 获取文件ID
 */
char*
get_file_id(char *fileName, char *dirName, char *diskName){

	char sql[MAX_BUF_SIZE];
	memset(sql, 0, sizeof(sql));
	sprintf(sql, "SELECT file_id FROM `file_info` Where file_name = '%s' AND directory_name = '%s' AND disk_name = '%s'", fileName, dirName, diskName);

	if (mysql_query(g_conn, sql)){
		 print_mysql_error(NULL);
	}

	g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	char *file_id = (char *) malloc(MAX_BUF_SIZE);
	int i;
	while ((g_row = mysql_fetch_row(g_res))) {
		for(i=0; i<get_fields(); i++){
			sprintf(file_id, "%s", g_row[i]);   //获取目录ID
		}
	}

	return file_id;
}
Ejemplo n.º 25
0
/**
 * 获取目录名
 * 已知目录ID
 */
char*
get_directory_name(char *dirId){

	char* sql[MAX_BUF_SIZE];
	memset(sql,0,sizeof(sql));
	sprintf(sql,"SELECT directory_name FROM `directoty_info` WHERE directory_id = '%s'",dirId);

	if(mysql_query(g_conn,sql))
	{
		print_mysql_error(NULL);
	}

	g_res = mysql_store_result(g_conn);// 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

	char* dirName = (char*)malloc(MAX_BUF_SIZE);

	if((g_row = mysql_fetch_row(g_res)))
	{
		sprintf(dirName,"%s",g_row[0]);
	}

	return dirName;
}
Ejemplo n.º 26
0
int main(int argc, const char *argv[])
{
    /* Initialize all query strings */
    const char *create_schema = "CREATE SCHEMA IF NOT EXISTS %s;";
    const char *create_table = "CREATE TABLE IF NOT EXISTS %s.zend_cf_remove_servers(id INTEGER);";
    const char *select_remove_servers = "SELECT id FROM %s.zend_cf_remove_servers;";
    const char *delete_server = "DELETE FROM %s.zend_cf_remove_servers WHERE id = %d;";
    
    /* Check that number of parameters is correct */
    if(argc == 1) {             /* No params = do nothing */
        while(true) {
            int status;
            sleep(10 * MY_SLEEP_SECONDS);
            waitpid(-1,&status,WNOHANG);
        }
    }
    if(argc != 9) {
        usage(argv[0]);
        exit(1);
    }

    /* Allocate memory for query buffer */
    if((query = malloc(sizeof(char) * 1024)) == NULL) {
        exit(3);
    }

    /* Parse prgram arguments */
    params.mysql_hostname = argv[1];
    params.mysql_port = atoi(argv[2]);
    params.mysql_username = argv[3];
    params.mysql_password = argv[4];
    params.mysql_dbname = argv[5];
    params.server_id = atoi(argv[6]);
    params.web_api_key_name = argv[7];
    params.web_api_key = argv[8];

    /* Setup signal handler */
    signal(SIGTERM, term_handler);

    /* Initialize MySQL connection */
    mysql_init(&mysql);
    my_bool recon = true;
    mysql_options(&mysql,MYSQL_OPT_RECONNECT,&recon); /* Set option to auto
                                                       * restart mysql connection */
    if(mysql_real_connect(&mysql,params.mysql_hostname,params.mysql_username,params.mysql_password,NULL,params.mysql_port,NULL,CLIENT_REMEMBER_OPTIONS) == NULL) {
        finish_with_error();
    }

    /* Create schema if needed */
    sprintf(query,create_schema,params.mysql_dbname);
    if(mysql_query(&mysql,query))
        print_mysql_error();
    /* Create table that will hold IDs of ZS nodes to remove */
    sprintf(query,create_table,params.mysql_dbname);
    if(mysql_query(&mysql,query))
        print_mysql_error();

    MYSQL_RES *result;
    MYSQL_ROW row;
    int status;
    int server_id;
    while(true) {               /* Loop forever */
        /* Query server IDs that should be removed */
        sprintf(query,select_remove_servers,params.mysql_dbname);
        if(mysql_query(&mysql,query)) {
            print_mysql_error();
        } else {
            result = mysql_store_result(&mysql);
            while((row = mysql_fetch_row(result))) {
                /* Delete server from Zend Server cluster by calling zs-manage */
                server_id = atoi(row[0]);
                sprintf(query,"/usr/local/zend/bin/zs-manage cluster-remove-server %d -N %s -K %s -f",server_id,params.web_api_key_name,params.web_api_key);
                fprintf(stderr,"%s\n",query);
                /* If call to zs-manage failed, print FAILED on stderr */
                if(system(query) == -1) {
                    fprintf(stderr,"FAILED\n");
                }
                /* Delete server ID from table */
                sprintf(query,delete_server,params.mysql_dbname,server_id);
                if(mysql_query(&mysql,query)) {
                    print_mysql_error();
                }
            }
        }
        /* waitpid call to prevent zombie processes */
        waitpid(-1,&status,WNOHANG);
	sleep(MY_SLEEP_SECONDS);
    }
}
Ejemplo n.º 27
0
int get_datos_cliente(MYSQL *my_con, int codigo, Cliente &c)
{
    std::string     consulta = "SELECT * FROM cliente WHERE COD_CLIENTE=" + utiles::to_string(codigo, 6);
    MYSQL_RES       *resultado;
    MYSQL_ROW       fila;

    if(mysql_query(my_con, consulta.c_str()) != 0) {
        print_mysql_error(my_con, "Fallo al seleccionar un cliente.");
        return 1;
    }
    else {
        if((resultado = mysql_store_result(my_con)) == NULL) {
            print_mysql_error(my_con, "Fallo al almacenar el resultado.");
            return 2;
        }
        else {
            if(static_cast<int>(mysql_num_rows(resultado)) > 1) {
                print_mysql_error(my_con, "Varios clientes con el mismo codigo.");
                return 3;
            }

            if(static_cast<int>(mysql_num_fields(resultado)) != 15) {
                print_mysql_error(my_con, "El numero de columnas no coincide.");
                return 4;
            }

            // Columna      Contenido       Tipo
            // -------      ---------       ----
            //  0           id_cliente      Entero (No usable, interno BD)
            //  1           cod_cliente     Entero
            //  2           razon_social    Texto
            //  3           domicilio       Texto
            //  4           cod_postal      Texto
            //  5           poblacion       Texto
            //  6           provincia       Texto
            //  7           nif             Texto
            //  8           tel1            Texto
            //  9           tel2            Texto
            //  10          fax             Texto
            //  11          forma_pago      Entero
            //  12          categoria       Entero
            //  13          swift_bic       Texto
            //  14          iban            Texto

            while((fila = mysql_fetch_row(resultado)) != NULL) {
                c.codigo        = (fila[1] != NULL) ? utiles::to_integer(fila[1]) : 0;
                c.razon_social  = fila[2];
                c.domicilio     = fila[3];
                c.codigo_postal = fila[4];
                c.poblacion     = fila[5];
                c.provincia     = fila[6];
                c.nif           = fila[7];
                c.tel1          = fila[8];
                c.tel2          = fila[9];
                c.fax           = fila[10];
                c.forma_pago    = (fila[11] != NULL) ? utiles::to_integer(fila[11]) : 0;
                c.categoria     = (fila[12] != NULL) ? utiles::to_integer(fila[12]) : 0;
                c.swift_bic     = fila[13];
                c.iban          = fila[14];
            }

            mysql_free_result(resultado);
        }
    }

    return 0;
}