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的逻辑了。
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的逻辑了。
相关文章推荐
- 如何用java代码访问远程web服务器(手写一个自己的httpClient)
- 给自己确定一个目标 jquery 和数据库
- oracle授权另外一个用户访问自己创建的数据对象
- 无论何时请给自己一个目标 推荐
- Objective-C如何自己实现一个基于数组下标的属性访问模式
- 学习的时候给自己一个目标
- 运行确认怎么用vnc访问自己电脑,并且同时又是同一个会话?
- 要给自己一个目标
- java 自己写的一个自动分析对象的mysql数据库操作工具
- 给自己的BLOG添加一个详细的访问统计
- 先定一个小目标,自己封装个ajax
- 2015年给自己制定一个目标
- 使用MyBatis搭建一个访问mysql数据库的简单示例
- Mysql数据库学习(四):常用Mysql C API 介绍和使用、封装一个访问Mysql数据库的类MysqlDB
- oracle授权另外一个用户访问自己创建的数据对象
- 给自己一个目标,坚持每周都写点东西
- 怎么用vnc访问自己电脑,并且同时又是同一个会话?
- 使用tomcat+nat123在自己电脑上发布一个外网可以访问的网站
- Objective-C如何自己实现一个基于数组下标的属性访问模式
- 2016给自己一个目标