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的逻辑了。

浙公网安备 33010602011771号