linux下C连接mysql示例

来源:互联网 发布:hishop云商城2.0源码 编辑:程序博客网 时间:2024/05/01 06:47
环境: 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;}


0 0
原创粉丝点击