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数据库进行交互,实现数据的增删改查操作。以下是相关知识点的详细说明: 1. **C语言编程基础**:C语言是一种强大的编程语言,常用于系统级编程,包括...
在Linux环境下,特别是CentOS 6.5这样的操作系统中,使用C语言与MySQL数据库进行交互是一种常见的编程需求。本文将详细介绍如何在32位的CentOS 6.5系统上,利用C语言实现对MySQL数据库的查询、插入和删除操作。 ...
1. MySQL的安装与配置: 在Ubuntu下安装MySQL方法很简单,使用如下命令: 代码如下:sudo apt-get install mysql-server 安装的过程中系统会提示设置root密码,此过程可以跳过,但是建议在安装时提示设置root密码的...
表字段描述: 1、users表(用户)字段有(id_ |name_名称|create_time_创建时间|creator_id_由谁创建|...1、实现用户 用户组各自的增删改查操作; 2、用户可以用-S -n name 查看用户所属组、以及该组定义的策略信息。
3. **MySQL数据库接口**:通过MySQL的C API连接数据库,执行SQL语句来实现账户数据的增删改查,同时处理并发访问和事务处理。 4. **用户界面设计**:创建一个友好的命令行界面,使用户能方便地进行各种操作,如输入...
在开发过程中,需要创建合适的数据库结构,如用户表、好友关系表和消息表,并编写相应的SQL语句来执行增删改查操作。C语言可以通过MySQL的C API连接到数据库,执行SQL命令并处理返回的结果。 至于UDP协议,它是网络...
数据库的设计和操作需要遵循SQL(结构化查询语言)标准,用于执行增删改查等操作。 3. **聊天室功能实现**: - **登录/注册**:用户需要输入用户名和密码进行身份验证,注册时需确保用户名的唯一性,并对密码进行...
设计要求包括实现图书的增删改查功能,用户注册、登录、借阅、归还等操作,并确保系统的稳定性和安全性。 【总体设计】 系统由四个主要部分构成:数据库代码、服务器代码、中间件程序和客户端程序。程序设计流程从...
1.通讯录联系人信息有:姓名(中文)、公司、职位、电话... 可对通讯录联系人实现增、删、查、改操作 3. 支持中文联系人输入 4. 可实现手机与姓名查找联系人 5. 通过姓名拼音进行排序 6. 有快速浏览联系人的功能
- SQL:所有关系型数据库的基础,学习SQL语法和语句是必要的,包括DML(增删改查)、DDL(定义表结构)和DCL(权限管理)。 - API与驱动:如ODBC(Open Database Connectivity)和JDBC(Java Database ...
在学生学籍管理系统中,我们可以选择关系型数据库如MySQL或SQLite,因为它们支持SQL(结构化查询语言),能方便地进行数据的增删查改操作。SQL语言分为DQL(查询)、DML(数据操纵)、DDL(数据定义)和DCL(数据...
4. **MySQL数据库集成**:在软件中集成MySQL,需要了解SQL语言,能够创建数据库、表结构,执行增删改查操作。此外,还需要处理并发访问、事务管理、错误处理等问题,确保数据的一致性和完整性。 5. **用户界面**:...
- **跨平台支持**: 支持多种操作系统,如Unix、Linux和Windows。 - **安装简易**: 在官方文档中有详细的安装指南,适用于不同平台。 **1.2 PHP的历史与发展** - **起源**: PHP起源于Rasmus Lerdorf创建的“个人...
通过SQL(Structured Query Language)语句,我们可以进行数据的增删改查等操作。在Socket编程中,我们通常会在服务器端建立与MySQL数据库的连接,处理客户端发送的SQL请求,执行后返回结果。 将Socket与MySQL结合...
服务器可能通过特定的API与MySQL交互,执行增删改查等操作,实现数据的持久化。 这个项目展示了如何在Linux环境下利用epoll、TCP套接字和线程池技术构建一个高效、可扩展的服务器,并结合MySQL数据库进行数据管理。...
C语言可以通过MySQL的C API与MySQL服务器进行交互,执行SQL语句,进行数据的增删改查。在源码中,这部分内容可能包括连接数据库、执行查询、处理结果集等操作。 6. **Readme**:Readme文件通常包含了项目的介绍、...
在实际应用中,pymysql安装完成后,开发者可以在Python程序中导入pymysql模块并使用它来建立与MySQL数据库的连接,执行SQL语句,以及进行数据的增删改查等操作。 整个安装过程中还隐含了几个关键知识点: - 使用...
- **SQL操作**:使用SQL语句进行增删改查操作,如INSERT用于添加新用户,SELECT用于查询用户信息,UPDATE用于修改用户信息,DELETE用于删除用户。 5. **安全性**:为了保护用户数据的安全,服务器和客户端之间的...