`
asyty
  • 浏览: 347536 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Linux C语言连接MySQL 增删改查操作

阅读更多

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

 

 

分享到:
评论

相关推荐

    CSQL.rar_ CSQL_CSQL_MYSQL改_linux c mysql_linux mysql增删

    这篇教程主要聚焦于在Linux操作系统下,如何使用C语言与MySQL数据库进行交互,实现数据的增删改查操作。以下是相关知识点的详细说明: 1. **C语言编程基础**:C语言是一种强大的编程语言,常用于系统级编程,包括...

    linux C连接mysql的查询,插入,删除操作

    在Linux环境下,特别是CentOS 6.5这样的操作系统中,使用C语言与MySQL数据库进行交互是一种常见的编程需求。本文将详细介绍如何在32位的CentOS 6.5系统上,利用C语言实现对MySQL数据库的查询、插入和删除操作。 ...

    linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql

    1. MySQL的安装与配置: 在Ubuntu下安装MySQL方法很简单,使用如下命令: 代码如下:sudo apt-get install mysql-server 安装的过程中系统会提示设置root密码,此过程可以跳过,但是建议在安装时提示设置root密码的...

    Linux系统C语言编程连接MySql数据库实现的用户 用户组 用户策略 管理系统(getopt解析命令行参数)

    表字段描述: 1、users表(用户)字段有(id_ |name_名称|create_time_创建时间|creator_id_由谁创建|...1、实现用户 用户组各自的增删改查操作; 2、用户可以用-S -n name 查看用户所属组、以及该组定义的策略信息。

    LinATM自动取款机Linux版源码MySQL

    3. **MySQL数据库接口**:通过MySQL的C API连接数据库,执行SQL语句来实现账户数据的增删改查,同时处理并发访问和事务处理。 4. **用户界面设计**:创建一个友好的命令行界面,使用户能方便地进行各种操作,如输入...

    linux qq gtk mysql

    在开发过程中,需要创建合适的数据库结构,如用户表、好友关系表和消息表,并编写相应的SQL语句来执行增删改查操作。C语言可以通过MySQL的C API连接到数据库,执行SQL命令并处理返回的结果。 至于UDP协议,它是网络...

    用C语言编写聊天室

    数据库的设计和操作需要遵循SQL(结构化查询语言)标准,用于执行增删改查等操作。 3. **聊天室功能实现**: - **登录/注册**:用户需要输入用户名和密码进行身份验证,注册时需确保用户名的唯一性,并对密码进行...

    linux 图书管理系统(中间件)

    设计要求包括实现图书的增删改查功能,用户注册、登录、借阅、归还等操作,并确保系统的稳定性和安全性。 【总体设计】 系统由四个主要部分构成:数据库代码、服务器代码、中间件程序和客户端程序。程序设计流程从...

    通讯录管理系统.zip(Linux-C语言+数据结构+MySQL)

    1.通讯录联系人信息有:姓名(中文)、公司、职位、电话... 可对通讯录联系人实现增、删、查、改操作 3. 支持中文联系人输入 4. 可实现手机与姓名查找联系人 5. 通过姓名拼音进行排序 6. 有快速浏览联系人的功能

    linux数据库编程

    - SQL:所有关系型数据库的基础,学习SQL语法和语句是必要的,包括DML(增删改查)、DDL(定义表结构)和DCL(权限管理)。 - API与驱动:如ODBC(Open Database Connectivity)和JDBC(Java Database ...

    c语言程序设计学生学籍管理,数据库,SQL

    在学生学籍管理系统中,我们可以选择关系型数据库如MySQL或SQLite,因为它们支持SQL(结构化查询语言),能方便地进行数据的增删查改操作。SQL语言分为DQL(查询)、DML(数据操纵)、DDL(数据定义)和DCL(数据...

    Linpop局域网聊天软件源码MySQL

    4. **MySQL数据库集成**:在软件中集成MySQL,需要了解SQL语言,能够创建数据库、表结构,执行增删改查操作。此外,还需要处理并发访问、事务管理、错误处理等问题,确保数据的一致性和完整性。 5. **用户界面**:...

    PHP新手教程(初学PHP的教程)

    - **跨平台支持**: 支持多种操作系统,如Unix、Linux和Windows。 - **安装简易**: 在官方文档中有详细的安装指南,适用于不同平台。 **1.2 PHP的历史与发展** - **起源**: PHP起源于Rasmus Lerdorf创建的“个人...

    socket 与mysql联合编程

    通过SQL(Structured Query Language)语句,我们可以进行数据的增删改查等操作。在Socket编程中,我们通常会在服务器端建立与MySQL数据库的连接,处理客户端发送的SQL请求,执行后返回结果。 将Socket与MySQL结合...

    linux写的基于epoll技术的socket tcp服务器,数据库采用mysql.zip

    服务器可能通过特定的API与MySQL交互,执行增删改查等操作,实现数据的持久化。 这个项目展示了如何在Linux环境下利用epoll、TCP套接字和线程池技术构建一个高效、可扩展的服务器,并结合MySQL数据库进行数据管理。...

    C语言后台代码

    C语言可以通过MySQL的C API与MySQL服务器进行交互,执行SQL语句,进行数据的增删改查。在源码中,这部分内容可能包括连接数据库、执行查询、处理结果集等操作。 6. **Readme**:Readme文件通常包含了项目的介绍、...

    MySQL和pymysql的安装.pdf

    在实际应用中,pymysql安装完成后,开发者可以在Python程序中导入pymysql模块并使用它来建立与MySQL数据库的连接,执行SQL语句,以及进行数据的增删改查等操作。 整个安装过程中还隐含了几个关键知识点: - 使用...

    Linux C网络词典

    - **SQL操作**:使用SQL语句进行增删改查操作,如INSERT用于添加新用户,SELECT用于查询用户信息,UPDATE用于修改用户信息,DELETE用于删除用户。 5. **安全性**:为了保护用户数据的安全,服务器和客户端之间的...

Global site tag (gtag.js) - Google Analytics