C语言连接mysql数据库

本文介绍了如何在Linux系统中安装MySQL客户端软件开发库libmysqlclient,包括安装命令、查找头文件和库文件的路径、以及如何通过gcc编译器进行C源程序的编译与链接。同时,提供了设置环境变量使库可用的方法,并展示了一个简单的C程序示例,演示了如何使用libmysqlclient连接MySQL服务器并执行SQL查询。
摘要由CSDN通过智能技术生成
操作系统是Linux,需要mysql客户端软件开发库libmysqlclient,这个函数库是mysql的组成部分之一。
一般头文件都在/usr/include/mysql路径下,库文件都在/usr/lib/mysql路径下。
如果没有需要安装mysql-devel包(mysql-devel-5.1.47-4.el6.i686.rpm)
[**@**]# rpm -ivh mysql-devel-5.1.47-4.el6.i686.rpm
安装完成后可以去那两个路径下看看有没有,如果没有就查找一下
[**@**]# find / -name mysql.h
[**@**]# find / -name mysqlclient
看一下路径在哪里。


安装完成后,就可以编译连接C源程序了。


[**@**]# gcc -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient *.c
编译成功即可运行。


解释下:
gcc GNU C/C++编译器
-I指定头文件所在路径(大写i)
-L 指定库文件所在路径
-l 与所需要的动态链接库链接起来(小写L)

这么长的编译命令一般都在make文件里面写了


关于动态链接库可以添加一个环境变量
[**@**]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usrlib/mysql

不过一劳永逸的办法是:将这句话LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usrlib/mysql添加在.bashrc里面


最后源码:

#include <stdio.h>
#include <mysql.h>

int main(int argc, char *argv[])
{
  int i;
  MYSQL *conn;        // connection to MySQL server
  MYSQL_RES *result;  // result of SELECT query
  MYSQL_ROW row;      // one record (row) of SELECT query

  // connect to MySQL
  conn = mysql_init(NULL);
  // mysql_options(conn, MYSQL_READ_DEFAULT_GROUP, "myclient");
  if(mysql_real_connect(
        conn, "localhost", "root", "uranus", //此处更改用户名密码
        "mylibrary", 0, NULL, 0) == NULL) {
      fprintf(stderr, "sorry, no database connection ...\n");
      return 1;
    }

  // only if utf8 output is needed
  mysql_query(conn, "SET NAMES 'utf8'");

  // retrieve list of all publishers in mylibrary
  const char *sql="SELECT COUNT(titleID), publName \
                   FROM publishers, titles \
                   WHERE publishers.publID = titles.publID  \
                   GROUP BY publishers.publID \
                   ORDER BY publName";
  if(mysql_query(conn, sql)) {
    fprintf(stderr, "%s\n", mysql_error(conn));
    fprintf(stderr, "Fehlernummer %i\n", mysql_errno(conn));
    fprintf(stderr, "%s\n", sql);
    return 1;
  }

  // process results
  result = mysql_store_result(conn);
  if(result==NULL) {
    if(mysql_error(conn))
      fprintf(stderr, "%s\n", mysql_error(conn));
    else
      fprintf(stderr, "%s\n", "unknown error\n");
    return 1;
  }
  printf("%i records found\n", (int)mysql_num_rows(result));

  // loop through all found rows
  while((row = mysql_fetch_row(result)) != NULL) {
    for(i=0; i < mysql_num_fields(result); i++) {
      if(row[i] == NULL)
        printf("[NULL]\t");
      else
        printf("%s\t", row[i]);
    }
    printf("\n");
  }

  // de-allocate memory of result, close connection
  mysql_free_result(result);
  mysql_close(conn);
  return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值