Ejemplo n.º 1
0
fuh::mysql_result fuh::db_query(const std::string& sql) {
	if(mysql_query(conn, sql.c_str())) {
		WRN_UH << "not connected to database, reconnecting..." << std::endl;
		//Try to reconnect and execute query again
		if(!mysql_real_connect(conn, db_host_.c_str(),  db_user_.c_str(), db_password_.c_str(), db_name_.c_str(), 0, NULL, 0)
				|| mysql_query(conn, sql.c_str())) {
			ERR_UH << "Could not connect to database: " << mysql_errno(conn) << ": " << mysql_error(conn) << std::endl;
			throw error("Error querying database.");
		}
	}
	return mysql_result(mysql_store_result(conn), result_deleter());
}
Ejemplo n.º 2
0
site_info collect_info(char *site) {
    MYSQL mysql, *conn;
    MYSQL_RES *site_name_result;
    MYSQL_RES *site_domain_result;
    MYSQL_ROW site_domain_row;
    char *site_name;
    char *site_id_tmp;
    char site_name_sql[LEN_1024] = {0};
    char site_domain_sql[LEN_1024] = {0};
    int site_id;
    int master_id;

    /* 动态分配site相关信息内存 */
    site_info info;
    if ((info = malloc(sizeof(struct info_list))) == NULL) {
        printf("info构动态分配内存错误\n");
        exit(1);
    }

    /* 数据库信息 */
    const char *ip = "192.168.56.101";
    const char *db_pawd = "123456";
    int port = 3306;

    /* 临时site */
    char site_tmp[LEN_16] = {0};
    strncpy(site_tmp, site, strlen(site));

    /* 获得site_name和site_id */
    site_name = strtok(site_tmp, SITE_DELIMITER);
    site_id_tmp = strtok(NULL, SITE_DELIMITER);
    site_id = atoi(site_id_tmp);

    /* 初始mysql句柄结构 */
    mysql_init(&mysql);

    /* 连接mysql */
    mysql_init(&mysql);
    if ((conn = mysql_real_connect(&mysql, ip, "root", db_pawd, "web_check", port, NULL, 0)) == NULL) {
        if (mysql_error(&mysql))
            fprintf(stderr, "connection error %d : %s\n", mysql_errno(&mysql), mysql_error(&mysql));
        printf("Fail to connect mysql, ip:%s\tport:%d\n", ip, port);
        exit(1);
    }

    /* 查询site_name结果 */
    sprintf(site_name_sql, "select * from %s where site like \'%%%s%%\'", INDEPENDENT, site_name);
    site_name_result = mysql_result(conn, site_name_sql);

    /* 查询site_id结果 */
    master_id = handle_site_id(info, site_name_result, site_id);

    /* 查询domain结果 */
    sprintf(site_domain_sql, "select * from %s where site_name = \'%s\'", COMMON, site_name);
    site_domain_result = mysql_result(conn, site_domain_sql);
    while ((site_domain_row = mysql_fetch_row(site_domain_result))) {
        info->domain = (char *)calloc(LEN_16, sizeof(char));

        strncpy(info->domain, site_domain_row[2], strlen(site_domain_row[2]));

        /* 域名是否绑定 */
        if ((atoi(site_domain_row[4])) == 1) {
            info->site_id = site_id;
        } else {
            info->site_id = master_id;
        }
    }

    if ((info->telecom_ip == NULL) || (strlen(info->telecom_ip) == 0)) {
        printf("您输入的区不存在,请检查!\n");
        exit(1);
    }

    return info;
}