linux下C连接mysql示例

环境: linux mysql5.5 gcc

1:安装mysql5.5【安装步骤省略】,安装目录为/usr/local/mysql-5.5/
2:编写mysql_1.c文件:
#include <stdio.h>
#include <string.h>
#include "mysql.h"

int main(int argc,char *argv[])
{
    MYSQL mysql;  
    mysql_init(&mysql);  
    if(!mysql_real_connect(&mysql, "localhost", "root", "", "mysql", 0, NULL, 


0)) {  
        printf("Failed to connect to Mysql!\n");  
        return 0;  
    }else {  
        printf("Connected to Mysql successfully!\n");  
    }
    mysql_close(&mysql); 


    return 0;
}

3:编译生成执行文件,命令如下:
      gcc `mysql_config --cflags`  -o mysql_1.o -c mysql_1.c  【`mysql_config --cflags`是为了找到头文件mysql.h】
      gcc `mysql_config --libs` -o mysql_1 mysql_1.o     
4: 执行命令 ./mysql_1 出现错误,错误如下:
      ./mysql_1: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

5:创建动态库的软连接,命令如下:
      ln -s /usr/local/mysql-5.5/lib/libmysqlclient.so.18.0.0  /usr/lib/libmysqlclient.so.18

      ldconfig    【ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享】


6:执行命令 ./msyql_1 ,输出结果:
     Connected to Mysql successfully!


至此结束!

最后再附上一段c查询数据库的程序:

#include <stdio.h>

#include <string.h>
#include "mysql.h"

int main()
{
    MYSQL mysql;  
    MYSQL_RES *res;  
    MYSQL_ROW row;  
    char *query;  
    int flag, t;  

    unsigned int num_fields;
    unsigned int i;
    MYSQL_FIELD *fields;


    mysql_init(&mysql);  
    if(!mysql_real_connect(&mysql, "localhost", "root", "", "mysql", 0, NULL, 0)) {  
        printf("Failed to connect to Mysql!\n");  
        return 0;  
    }else {  
        printf("Connected to Mysql successfully!\n");  
    }

    query = " select db,name from mysql.proc ";
    flag = mysql_real_query(&mysql, query, (unsigned int)strlen(query));  
    if(flag) {  
        printf("Query failed!\n");  
        return 0;  
    }else {  
        printf("[%s] made...\n", query);  
    }
    res = mysql_store_result(&mysql);

    
    printf("result : %d records\n", mysql_num_rows(res));

    printf("fields column:");
    num_fields = mysql_num_fields(res);
    fields = mysql_fetch_fields(res);
    for(i = 0; i < num_fields; i++)
    {
        printf("%u:%s\t", (i+1), fields[i].name);
    }
    printf("\n");

    while(row = mysql_fetch_row(res)) {
        for(t=0; t<mysql_num_fields(res); t++)  
        {  
            printf("%s\t", row[t]);  
        }  
        printf("\n");
    }
    mysql_close(&mysql); 

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值