zoukankan      html  css  js  c++  java
  • 在CentOS里使用MySQL C API

    操作系统:CentOS6 (32或64位)

           真的是很困难,对于一个一直在windows下开发的程序员来说,在linux下想解决点问题,还真的要付出很多呀!为了在CentOS里使用MySQL C API ,这几天一直在不断努力,苍天不负有心人,终于能够在CentOS里使用MySQL C API 了!!!

          昨天折腾到下半夜1点多,终于从另外一个方向搞定了,是安装新版的MySQL;今天经过努力,在CentOS默认安装环境里,使用上系统默认安装的MySQL,也成功配置并使用上了MySQL C API。我想我遇到的问题,可能很多朋友会遇到,尤其是刚刚进入Linux的朋友,不敢独享,在此写出完整处理过程,以便各位朋友能够少走弯路,更快使用上MySQL C API !!

         好了,下面就开始说说我怎么处理的吧,我们是使用CentOS默认安装环境里的MySQL,并不是安装新版MySQL。建议大家用root帐号登入,这样修改一些东西比较方便。

    1,启动MySQL。要使用MySQL C API ,第一件事就是确认是否有MySQL和MySQL C API ,CentOS刚安装完毕时候,如果没有做任何修改,那么你的系统中已经安装了MySQL,版本为5.1.61。这时MySQL并没有启动,我们需要在“系统”->“管理”->“服务”中找到“mysqld”,随后启动它,确认启动完毕后,在终端中输入“mysql”就会出现MySQL的提示信息了。

    2,获得MySQL C API 的头文件和库。我们在终端中输入“whereis mysql”,大家会发现并没有一个叫“/usr/include/mysql”的目录,这个目录一般是开发MySQL程序的头文件的存放目录。没有不要紧,我们去mysql官方网站(http://www.mysql.com/),找到“MySQL Connectors”,随后选择“Connector/C”,进入这个链接页面后,选择自己的操作系统和版本,我们现在用32位系统,所以选择了32位的linux版本,是一个tar文件,具体下载链接:http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit.tar.gz ,点击下载完毕后,我们继续下一步。

    3,把MySQL C API 的头文件和库放到合适地方。首先解压缩我们刚才下载的tar文件,解压缩后,里面有目录和文件,我们只需要两个目录里的文件:“include”和"lib"。

         A,首先创建"/usr/include/mysql",把解压缩目录中的"include"目录中所有文件,拷贝到"/usr/include/mysql"目录中。

         B,把解压缩目录中的"lib"目录中所有文件,拷贝到“/usr/lib/mysql/”中。

        “/usr/include/mysql”目录存放文件是我们程序中要用到的头文件;“/usr/lib/mysql/”目录中存放文件是我们编译程序时候需要链接的库文件。

    4,在MySQL中创建测试用的表。表名称“ndb_test”。启动终端,在终端中执行下列命令:

         mysql -u root

         use test;

         create table ndb_test  (user varchar(30),password varchar(30));

        执行完上述语句后,我们就在MySQL中建立了一个叫“ndb_test”的表了。

    5,准备测试程序。我们创建一个叫“mysql.c”的文件,在这个文件中写上下列代码:

    #include <mysql.h>

    #include <stdio.h>


    int main(void) {

       MYSQL *conn;

       MYSQL_RES *res;

       MYSQL_ROW row;

      /* db configure*/

       char *server = "localhost";

       char *user = "root";

       char *password = "";

       char *database = "test";

       int  port=3314;   

       conn = mysql_init(NULL);

       

       /* Connect to database */

       if (!mysql_real_connect(conn, server,

             user, password, database, port, NULL, 0)) {

          fprintf(stderr, "connect error: %s\n", mysql_error(conn));

          exit(0);

       }


       /* send SQL query */

       if (mysql_query(conn, "select * from ndb_test")) {

          fprintf(stderr, "%s\n", mysql_error(conn));

          exit(0);

       }


       res = mysql_use_result(conn);

       

       /* output table name */

       printf("MySQL Tables in mysql database:\n");

       while ((row = mysql_fetch_row(res)) != NULL)

          printf("%s - %s \n", row[0],row[1]);


       /* close connection */

       mysql_free_result(res);

       mysql_close(conn);

      return 0;

    6,用GCC编译程序。在终端中进入“mysql.c”文件所在目录,随后输入:"gcc -o mydbcon -I /usr/include/mysql/ -L /usr/lib/mysql -lmysqlclient mysql.c",如果上述操作无误,我们应该已经编译出来一个叫"mydbcon"的可执行文件了。

    7,用"mydbcon"可执行文件验证是否可以使用MySQL C API 了。在终端中键入"mydbcon"可执行文件所在目录,输入:“./mydbcon”,如果现在一切OK,那么我们会看到无错误的提示。很可能出现错误,^_^

    错误提示:“error while loading shared libraries: libmysql.so.16 ”。

                解决办法:找到“/etc/ld.so.conf”文件,打开它,在文件中添加一行:“/usr/lib/mysql”。输入这行是mysql库文件目录路径,我们把mysql库文件放到了“/usr/lib/mysql”中,    所以 在这里添加这行内容是“/usr/lib/mysql”,如果你放到其它目录中,请用你正确的存放MySQL库路径名。


               随后继续执行可执行文件“mydbcon”,还可能会出现错误。


               错误提示:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

              解决办法:

                                1,打开“/etc/my.cnf”文件,在末尾添加:

                                      [mysql]
                                      socket
    =/var/lib/mysql/mysql.sock

                                2,在终端中输入:"ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock"


            随后继续执行可执行文件“mydbcon”,这个时候我们应该能够看到没有错误的提示了,和源代码中比较,如果一致,我们的配置就算成功了,现在就可以在GCC中编译用MySQL C API编写的程序了。

    8,在Eclipse CDT中使用MySQL C API。在Eclipse的CDT中创建一个C工程,在工程中新建一个C文件,代码和上面一样。随后就是需要设置一下,打开工程的属性,在属性窗体左侧点“C/C++ Build”->"settings",随后在右侧的“tool settings”tab页里进行设置。

          a,“GCC C Complier”->"inclues"->"include pathes(l)"中添加一项“/usr/include/mysql”。注意,这个地方是上面那个,不是下面那个。

         b,“GCC C Complier”->"Miscellaneous“->"Other flags"中增加“-std=c99”。

         c,“GCC C Linker”->"libraries"->"libraries"中增加一项“mysqlclient”。

         d,“GCC C Linker”->"libraries"->"librariy search path"中增加一项“/usr/lib/mysql”。

         以上各项全部配置完毕后,保存退出配置页面,随后编译,应该没有错误,随后运行编译出来的可执行文件,和GCC编译出来的执行结果一样,我们终于可以在Eclipse CDT中使用MySQL C API了!!!


      参考:

    http://www.linuxidc.com/Linux/2011-06/37733.htm

    http://toeverybody.blog.163.com/blog/static/1241289682011020113437900/  

    http://www.blogjava.net/asenyifei/articles/82575.html

    http://linux.chinaunix.net/techdoc/net/2009/06/24/1120090.shtml


     

  • 相关阅读:
    SQL 二进制和字符互转
    拒绝了对对象 'sp_OACreate' (数据库 'mssqlsystemresource',架构 'sys')的 EXECUTE 权限。
    SQL SERVER 正则替换
    SQL SERVER 算法执行效率
    webmin 安装
    MySQL5.6 PERFORMANCE_SCHEMA 说明
    flex 属性
    CSS 实现左侧固定,右侧自适应两栏布局的方法
    项目前端知识点
    为data中的某一个对象添加一个属性不起作用——this.$set的正确使用
  • 原文地址:https://www.cnblogs.com/sunylat/p/6119141.html
Copyright © 2011-2022 走看看