2014-07-13 16:20:38
来 源
中存储网
MySQL
操作系统是Linux,需要mysql客户端软件开发库libmysqlclient,这个函数库是mysql的组成部分之一。一般头文件都在/usr/include/mysql路径下,库文件都在/usr/lib/mysql路径下。如果没有需要安装mysql-

  操作系统是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里面

  最后源码:

  [cpp]

  #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, "%sn", mysql_error(conn));

  fprintf(stderr, "Fehlernummer %in", mysql_errno(conn));

  fprintf(stderr, "%sn", sql);

  return 1;

  }

  // process results

  result = mysql_store_result(conn);

  if(result==NULL) {

  if(mysql_error(conn))

  fprintf(stderr, "%sn", mysql_error(conn));

  else

  fprintf(stderr, "%sn", "unknown errorn");

  return 1;

  }

  printf("%i records foundn", (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("%st", row[i]);

  }

  printf("n");

  }

  // de-allocate memory of result, close connection

  mysql_free_result(result);

  mysql_close(conn);

  return 0;

  }

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。