现在的位置: 首页 > 综合 > 正文

mysql.c

2013年08月12日 ⁄ 综合 ⁄ 共 2298字 ⁄ 字号 评论关闭

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>  //函数调用头文件
#include <mysql/my_global.h> //全局函数的声明以及标准IO的头文件

int main()
{
    MYSQL *conn;
//打印mysqlclient 版本号
    printf("MYSQL client version:%s\n", mysql_get_client_info());

//mysql API初始化
    conn = mysql_init(NULL);

//mysql API链接
    if(!mysql_real_connect(conn, "localhost", "root", "123456", "lyytest", 0, NULL, 0)){
        fprintf(stderr, "Failed to connect to database:Error:%s\n",mysql_error(conn));
        goto END;
    }

//mysql API 字符串转移 可防止恶意操作
    char sql[1000] = "select * from lyyinfo";
    char query[1000] = {0};
    mysql_real_escape_string(conn, query, sql, strlen(sql));

//mysql API 查询链接是否正常并自动尝试在链接
    while(mysql_ping(conn)){

//        if(!mysql_real_connect(conn, "localhost", "root", "123456", "lyytest", 0, NULL, 0)){
//            fprintf(stderr, "Failed to connect to database:Error:%s and try to connect again\n",mysql_error(conn));
            sleep(1);
//        }

    }

//mysql API 查询
    if(mysql_real_query(conn, query, (unsigned int)(strlen(query)))){
        fprintf(stderr, "Failed to query database:Error:%s\n",mysql_error(conn));
        goto END;
    }

//mysql API 获得返回数据
    MYSQL_RES *res;
    res = mysql_store_result(conn);
    if(res == NULL){
        if(mysql_error(conn)){ //出错
            fprintf(stderr, "Failed to get result for select, Error:%s\n",mysql_error(conn));
            goto RES;
        } //未返回数据
        else if(mysql_field_count(conn) == 0){

            unsigned int num_row = 0;
            fprintf(stdout, "select not have data\n");
//mysql API query作用的行数
            int num_rows = 0;
            num_rows = mysql_affected_rows(conn);
        }
    }

//mysql API 获得结果集行数
    unsigned long num = 0;
    num = mysql_num_rows(res);
    fprintf(stdout, "number of res:%d\n", num);

//mysql API 循环读出数据
    MYSQL_ROW row;
    unsigned int num_fields;
    unsigned int i = 0;

//mysql API 获取字段数
    num_fields = mysql_num_fields(res);

//mysql API 获取每行
    while((row = mysql_fetch_row(res))){
        unsigned long *lengths;

//mysql API 获取个各字段数据长度
        lengths = mysql_fetch_lengths(res);

        for(i = 0; i < num_fields; i++){
            fprintf(stdout, "[%d , %s]\n", (int) lengths[i], row[i] ? row[i]: "NULL");
            //fprintf(stdout, "[%.*s]\n", (int) lengths[i],row[i] ? row[i]: "NULL");        
        }
    }

//mysql API销毁
RES:
    mysql_free_result(res);
END:
    mysql_close(conn);
    return 0;
}
=========================================================
gcc mysql.c -o exe -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient
./exe

抱歉!评论已关闭.