Linux C访问mysql数据库 目标是自己写一个MySQL monitor

今天的目标就是在Linux中用C连接MySQL数据库并且进行mysql数据库的操作.

MySQL编程有两个方式 ,一个是mysqlclient C客户端库,一个是mysql嵌入式服务器库。具体我们用那一个就看我们

在连接的时候是用的是什么参数。另外这两种方式写的代码几乎没有什么差别。只是当你在用mysql嵌入式服务器库时你需要加上两个特别的函数就可以了。

我遇到的第一问题就是包含头文件#include"mysql.h"时提示找不到这个文件。我当即想到我在装mysql的时候并没有默认安装 而是装在了自己的规定的目录,所以才找不到。所以我在头文件包含中加了一个绝对路径#include"/usr/lcoal/mysql/include/mysql/mysql.h"这样就成功的解决了第一个问题了。

连接mysql的步骤

1,通过mysql_library_init()初始化MySQL库 ,这一步可以省掉。因为我们第二步都会自动进行第一步的

2,调用mysql_init()初始化连接处理程序。

3,调用mysql_real_connect()连接到服务器

4,进行SQL处理

5,调用mysql_close()关闭MySQL服务器的连接。

6,调用mysql_library_end()结束MySQL调用。

连接的代码如下:

       int main()  

 {      

  //1,初始化mysql库和mysql链接程序
        MYSQL *mySQL=NULL;//为进行连接分配一个对象
        mySQL=mysql_init(NULL);
        if(mySQL==NULL)
        {
                printf("分配MySQL连接对象失败,内存不足!");
                return 1;
        }

        //2,开始进行mysql连接
        mySQL=mysql_real_connect(mySQL,"localhost","root","zhangmin","www",0,NULL,0);
        if(mySQL==NULL)
        {
                printf("连接mysql服务器失败!");
                return 1;
        }

        //3,进行SQL处理
        printf("成功连接MySQL数据服务器!");

  //4,断开MySQL库的连接

  mysql_close(mySQL);

  //5,结束mysql库的调用

  mysql_library_end();
        return 0;
}

但是在编译的时候又出现了问题。说找不到mysql_init()等函数的实现。这才想起忘记带连接库了。

gcc -g -o mysqlmonitor myqlmonitor.c -I /usr/local/mysql/include/mysql -L /usr/local/mysql/lib/mysql -l mysqlclient -lz

这个命令的解释 -I 是include的意思 意思是说要加入的头文件  -L就是需要加入的lib库文件 -l 连接那一个mysql库 -lz是由于mysql中存在一些问题,需要这个参数,大概意思是说压缩。

,在这个当中遇到了另外的问题 虽然说已经能够编译通过 但是在执行的过程中出现了error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory  hared object file:No such file or directory
发现没有libmysqlclient.so.15这个库

解决的方法是在mysql的lib目录先找到libmysqlclient.so.15 然后将这个文件拷贝到/usr/lib下就可以了

终于显示连接成功了。

下面就是实现mysqlmonitor的逻辑了。

 

 

 

 

posted @ 2012-10-23 00:49  张敏樱木花道  阅读(1014)  评论(0)    收藏  举报