Linux下想要测试mysql和memcached的性能,因为是服务器只能通过终端连接,所以考虑用C语言写测试代码。于是研究了把C怎么连接MySQL以及增删改查的代码。安装mysql-client或者编译源码安装mysql后,会有支持C语言写客户端的头文件和库文件,但是目录可能不一样,mysql源码安装见 http://asyty.iteye.com/blog/1442503
从网上找了类似的代码改改后如下
连接数据库
#include <stdlib.h>
#include <stdio.h>
#include <mysql.h>
int main() {
MYSQL *conn_ptr;
conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
printf("mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "123456", "test", 0, NULL, 0);
//root 为用户名 123456为密码 test为要连接的database
if (conn_ptr) {
printf("Connection success\n");
} else {
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
通过gcc编译(我的mysql源码安装目录为 /usr/local/mysql)
gcc -o connect -g connect.c -I /usr/local/mysql/include/ -L /usr/local/mysql/lib/ -l mysqlclient
参数说明:-I(大写的i) 表示要连接的头文件目录,因为使用了<mysql.h> ,-L表示要连接的库文件目录 -l(小写的L) 表示要连接的具体的库名称,在/usr/local/mysql/lib/ 下,有叫做libmysqlclient.so的库,指定具体的库的名字时,默认去掉头尾的lib和.so直接使用中间的mysqlclient
如果不用-I -L ,可能导致找不到头文件 或者 函数未定义的错误
如果出现错误error while loading shared libraries,那是因为.so没有被系统载入,解决办法如下
vi /etc/ld.so.conf // 打开ld.so.conf文件,增加.so文件的路径,比如/usr/local/mysql/lib/
ldconfig //重新加载.so文件
查询代码
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
int main() {
MYSQL *conn_ptr;
MYSQL_RES *res_ptr;
MYSQL_ROW sqlrow;
MYSQL_FIELD *fd;
int res, i, j;
conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "123456", "test", 0, NULL, 0);
if (conn_ptr) {
res = mysql_query(conn_ptr, "select name,age from user"); //查询语句
if (res) {
printf("SELECT error:%s\n",mysql_error(conn_ptr));
} else {
res_ptr = mysql_store_result(conn_ptr); //取出结果集
if(res_ptr) {
printf("%lu Rows\n",(unsigned long)mysql_num_rows(res_ptr));
j = mysql_num_fields(res_ptr);
while((sqlrow = mysql_fetch_row(res_ptr))) { //依次取出记录
for(i = 0; i < j; i++)
printf("%s\t", sqlrow[i]); //输出
printf("\n");
}
if (mysql_errno(conn_ptr)) {
fprintf(stderr,"Retrive error:s\n",mysql_error(conn_ptr));
}
}
mysql_free_result(res_ptr);
}
} else {
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
插入更新及删除
#include <stdlib.h>
#include <stdio.h>
#include <mysql.h>
int main() {
MYSQL *conn_ptr;
int res;
conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
printf("mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "123456", "test", 0, NULL, 0);
if (conn_ptr) {
res = mysql_query(conn_ptr, "insert into user values(null,'Ann',5)"); //可以把insert语句替换成delete或者update语句,都一样的
// res = mysql_query(conn_ptr, "delete from user where name = 'Ann' and age < 10");
if (!res) { //输出受影响的行数
printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(conn_ptr));
} else { //打印出错误代码及详细信息
fprintf(stderr, "Insert error %d: %sn",mysql_errno(conn_ptr),mysql_error(conn_ptr));
}
} else {
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
转载请注明源 http://asyty.iteye.com/blog/1447092
分享到:
相关推荐
在Linux操作系统下的C语言进行MySQL进行增删改查
VS2008运行环境 c语言实现单链表增删改查操作 并输出到控制台上
自己写的,能够使用,对c语言的指针用的淋漓精致,有需要的小伙伴可以下载看下
学生管理系统 C语言 通过运行( 增删改查)学生管理系统 C语言 通过运行( 增删改查)学生管理系统 C语言 通过运行( 增删改查)
C语言编写的单链表增删改查,实现了单链表的增加,删除,修改,查询等功能
linux下C语言连接mysql的样例 * 需先安装mysqlclient库 * linux下C语言连接mysql的样例 * */ #include #include #include<mysql/mysql.h> void create(MYSQL *conn_ptr) { int ret; ret = mysql_query(conn_...
本库为C语言(Linux环境下编写的适用于所有C的数据结构库函数)。包括了最基础也是最常用的增删改查功能函数,队列,栈,链表(单链表,双链表,循环链表等都有),树的增删改查函数。程序可靠。
NULL 博文链接:https://yrcn.iteye.com/blog/1687785
linux下c语言操作mysql数据库,包括数据库的增删查找,使用mysql库进行操作
linux下C语言连接mysql数据库.docx
这是基于c#和.net实现的一个简易版mvc三层架构的小区物业管理系统(增删查改),包含有数据库备份,只要将Y_strong在数据库还原即可。
1、给设计一种结构体,用来保存学生信息(包括学号、姓名、三科成绩、平均成绩)。除平均成绩外,各项数据均由键盘输入。现在要求输入若干学生的信息,并实现以下功能:(可以使用数组或链表实现) ...
C语言版本的双链表,有增删改查功能,有注释,并且代码格式规范,容易理解
C语言实现网站增删改查
很好很强大的程序,实现二叉树的增删改查等基本操作,操作简单,程序结构清晰
Windows下 用C语言连接mysql
用C语言实现简单的数据库增删改查功能,dos界面,简单稳定,供学习参考
linux下用c语言连接mysql,都是一些C语言连接在linux系统下连接mysql的代码
数据结构-基于C语言实现线性顺序表的增删改查+排序,合表操作
用C语言写的红黑树,实现了增删改查, 程序一开始初始化了给定好的红黑树,并且用颜色形象的表示,所以分比较高。提示,需要用WINTC编译,因为用到了一个库函数上颜色,想用VC编译的童鞋,可以根据代码更改。核心...