您的位置:首页 > 运维架构 > Linux

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

2012-10-23 00:49 471 查看
今天的目标就是在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的逻辑了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: