博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql成批删除c语言_Linux C语言连接MySQL 增删改查操作
阅读量:6999 次
发布时间:2019-06-27

本文共 2948 字,大约阅读时间需要 9 分钟。

http://asyty.iteye.com/blog/1447092

Linux下想要测试mysql和memcached的性能,因为是服务器只能通过终端连接,所以考虑用C语言写测试代码。于是研究了把C怎么连接

MySQL以及增删改查的代码。安装mysql-client或者编译源码安装mysql后,会有支持C语言写客户端的头文件和库文件,但是目录可能不一

样,mysql源码安装见http://asyty.iteye.com/blog/1442503

从网上找了类似的代码改改后如下

连接数据库

点击(此处)折叠或打开

#include

#include

#include

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) 表示要连接的头文件目录,因为使用了 ,-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

#include

#include

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

#include

#include

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;

}

阅读(36) | 评论(0) | 转发(0) |

给主人留下些什么吧!~~

评论热议

转载地址:http://efevl.baihongyu.com/

你可能感兴趣的文章
java 生成jar包并保留注释
查看>>
分布式 OLTP 数据库
查看>>
C#学习之简单的WCF例子
查看>>
解决Mac OS 山猫10.8下Xcode无法更新以及速度慢的问题
查看>>
poj 1988 Cube Stacking(并查集)
查看>>
lamp 403
查看>>
关于“鸡脚神”的看法
查看>>
c# 路径空格---ProcessStartInfo参数问题
查看>>
我的MYSQL学习心得(十七) 复制
查看>>
用eclipse建立servlet工程
查看>>
MySql通用分页存储过程
查看>>
LoadRunner脚本回放日志中的Warning信息
查看>>
Surround the Trees(凸包求周长)
查看>>
转载:如何运用VI编辑器进行查找替换
查看>>
android xutils
查看>>
strut2.xml中result param详细设置
查看>>
Mysql注入绕过姿势
查看>>
移动互联网实战--社交游戏的排行榜设计和实现(2)
查看>>
不要再用if(xxx != null)或者try catch NullPointerException了,Optional可以帮你解决
查看>>
excel读写技术二
查看>>