首页 数据库 mysql教程 C连接MySQL数据库开发之Linux环境完整示例演示(增、删、改、查_MySQL

C连接MySQL数据库开发之Linux环境完整示例演示(增、删、改、查_MySQL

Jun 01, 2016 pm 01:13 PM
include linux mysql 数据库开发

一、开发环境

ReadHat6.332位、mysql5.6.15、gcc4.4.6

二、编译

gcc-I/usr/include/mysql-L/usr/lib-lmysqlclient main.c -o main.out

-I:指定mysql头文件所在目录(默认去/usr/include目录下寻找所用到的头文件)

-L:指定mysql动态库文件所在目录(默认从/usr/lib目录查找)

-l:链接libmysqlclient.so动态库

-o:生成的可执行文件名

三、完整示例

////main.c//mysql数据库编程////Created by YangXin on 14-5-22.//Copyright (c) 2014年 yangxin. All rights reserved.//#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql.h>MYSQL mysql;// 查询int query();// 修改int update();// 添加数据my_ulonglong add();// 参数化添加数据my_ulonglong addByParams();// 删除数据my_ulonglong delete();// 打印数据库服务器信息void printMySqlInfo();int main(int argc, const char * argv[]){	/*连接之前,先用mysql_init初始化MYSQL连接句柄*/	mysql_init(&mysql);		/*使用mysql_real_connect连接服务器,其参数依次为MYSQL句柄,服务器IP地址,	 登录mysql的用户名,密码,要连接的数据库等*/	if(!mysql_real_connect(&mysql, "localhost", "root", "yangxin", "test", 0, NULL, 0)) {		printf("connecting to Mysql error:%d from %s/n",mysql_errno(&mysql), mysql_error(&mysql));		return -1;	}else {		printf("Connected Mysql successful!/n");	}		printMySqlInfo();		// 设置编码	mysql_query(&mysql, "set names utf8");		// 参数化添加数据	addByParams();		// 查询	query();		// 修改	update();		// 添加	add();		// 删除	delete();		/*关闭连接*/	mysql_close(&mysql);	return 0;}// 查询int query(){	int flag, i;	const char *sql = NULL;	MYSQL_RES *res = NULL;	MYSQL_ROW row = NULL;	MYSQL_FIELD *fields = NULL;	sql = "select * from t_user" ;	flag = mysql_real_query(&mysql, sql, (unsigned int)strlen(sql));	if (flag) {		printf("query error:%d from %s/n",mysql_errno(&mysql),mysql_error(&mysql));		return -1;	}		 // 将查询结果读取到内存当中,如果数据很多的情况会比较耗内存	res = mysql_store_result(&mysql);	// res = mysql_use_result(&mysql); // 需要用到的时候,每次从服务器中读取一行		// 字段数量	unsigned int field_count = mysql_field_count(&mysql);	printf("field_cout:%d/n",field_count);		// 查询总数	my_ulonglong rows = mysql_num_rows(res);	printf("%lld/n",rows);		// 获取所有字段	fields = mysql_fetch_fields(res);	for (int i = 0; i < mysql_num_fields(res); i++) {		 printf("%s/t", fields[i].name);	}		printf("/n");		// 遍历结果集	while((row = mysql_fetch_row(res)))	{		for (i = 0; i < mysql_num_fields(res); i++)		{			printf("%s/t",row[i]);		 		}				printf("/n");	}		// 释放结果集	mysql_free_result(res);		return 0;}// 修改int update(){	const char *sql = NULL;	int flag = -1;	sql = "update t_user set name='lisi',age=20 where id=1";	// 执行SQL指令	flag = mysql_real_query(&mysql, sql, (unsigned int)strlen(sql));	if (flag) {		printf("update data error:%d from %s/n",mysql_errno(&mysql),mysql_error(&mysql));		return-1;	}		printf("update success./n");		return 0;}// 添加my_ulonglong add(){	const char *sql = NULL;	int flag = -1;	sql = "insert into t_user(name,age,address) values ('zhangsan',40,'beijing')";	// 执行	flag = mysql_real_query(&mysql, sql, strlen(sql));	if (flag) {		printf("add data error:%d from %s/n",mysql_errno(&mysql),mysql_error(&mysql));		return -1;	}		// 删除的行数	my_ulonglong affected_rows = mysql_affected_rows(&mysql);		// 新添加记录的ID	my_ulonglong newid = mysql_insert_id(&mysql);		printf("success add %lld record data, newid:%lld!/n",affected_rows,newid);		return newid;}// 参数化添加my_ulonglong addByParams(){	const char *sql = NULL;	MYSQL_STMT *stmt = NULL;	MYSQL_BIND bnd[3];// 占位符参数数量	memset(&bnd, 0, sizeof(bnd));		// 设置手动提交事务	//mysql_autocommit(&mysql, 0);		// 通过参数占位符的方式执行SQL	sql = "insert into t_user(name,age,address) values (?,?,?)";		stmt = mysql_stmt_init(&mysql);	// 预处理SQL	if(mysql_stmt_prepare(stmt, sql, (unsigned int)strlen(sql)))	{		fprintf(stderr, "mysql_stmt_prepare faild:%d from %s/n",				mysql_stmt_errno(stmt),mysql_stmt_error(stmt));		return -1;	}		// 封装占位符数据	const char *name = "hanzhiqiang";	bnd[0].buffer = (void *)name;	bnd[0].buffer_type = MYSQL_TYPE_STRING;	bnd[0].buffer_length = strlen(name);		int age = 30;	bnd[1].buffer = (void *)&age;	bnd[1].buffer_length = sizeof(int);	bnd[1].buffer_type = MYSQL_TYPE_LONG;		const char *addres = "heimuer";	bnd[2].buffer = (void *)addres;	bnd[2].buffer_length = strlen(addres);	bnd[2].buffer_type = MYSQL_TYPE_STRING;		// 绑定占位符参数值	if(mysql_stmt_bind_param(stmt, bnd))	{		fprintf(stderr, "mysql_stmt_bind_param faild:%d from %s/n",mysql_errno(&mysql), mysql_error(&mysql));		return -2;	}		// 执行SQL	if (mysql_stmt_execute(stmt)) {		fprintf(stderr, "mysql_stmt_execute faild:%d from %s/n", mysql_errno(&mysql), mysql_error(&mysql));		return -3;	}		// 关闭statement	mysql_stmt_close(stmt);		// 提交事务	//mysql_commit(&mysql);		// 事务回滚(在提交事务前)执行	// mysql_rollback(&mysql);		// 获取插入数据后,数据库受影响的记录数	my_ulonglong newid = mysql_stmt_insert_id(stmt);	printf("参数化语句插入新记录的id: %lld/n",newid);		// 受影响的行数	my_ulonglong affectedrows = mysql_stmt_affected_rows(stmt);	printf("参数化语句插入受影响的行数:%lld/n",affectedrows);		return newid;}my_ulonglong delete(){	const char *sql = NULL;	int flag = -1;	sql = "delete from t_user where id > 10";	flag = mysql_real_query(&mysql, sql, strlen(sql));	if (flag) {		printf("delete data error:%d from %s/n",mysql_errno(&mysql), mysql_error(&mysql));		return -1;	}		my_ulonglong affected_rows = mysql_affected_rows(&mysql);	printf("删除的行数:%lld/n",affected_rows);		printf("success delete %lld record data !/n",affected_rows);	return affected_rows;}void printMySqlInfo(){	const char *stat = mysql_stat(&mysql);	const char *server_info = mysql_get_server_info(&mysql);	const char *clientInfo = mysql_get_client_info();	unsigned long version =	mysql_get_client_version();	const char *hostinfo =	mysql_get_host_info(&mysql);	unsigned long serverversion = mysql_get_server_version(&mysql);	unsigned int protoinfo = mysql_get_proto_info(&mysql);		printf("stat:%s/n",stat);	printf("server_info:%s/n",server_info);	printf("clientInfo:%s/n",clientInfo);	printf("version:%ld/n",version);	printf("hostinfo:%s/n",hostinfo);	printf("serverversion:%ld/n",serverversion);	printf("protoinfo:%d/n",protoinfo);		const char *charactername = mysql_character_set_name(&mysql);	printf("client character set:%s/n",charactername);	if (!mysql_set_character_set(&mysql, "utf8"))	{		printf("New client character set: %s/n",			 mysql_character_set_name(&mysql));	}}
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

BITGet官方网站安装(2025新手指南) BITGet官方网站安装(2025新手指南) Feb 21, 2025 pm 08:42 PM

BITGet 是一款加密货币交易所,提供各种交易服务,包括现货交易、合约交易和衍生品。该交易所成立于 2018 年,总部位于新加坡,致力于为用户提供安全可靠的交易平台。BITGet 提供多种交易对,包括 BTC/USDT、ETH/USDT 和 XRP/USDT。此外,该交易所还在安全性和流动性方面享有盛誉,并提供多种功能,如高级订单类型、杠杆交易和 24/7 全天候客户支持。

gate.io安装包免费拿 gate.io安装包免费拿 Feb 21, 2025 pm 08:21 PM

Gate.io是一款受欢迎的加密货币交易所,用户可通过下载其安装包并安装在设备上使用。获取安装包步骤如下:访问Gate.io官方网站,点击“下载”,选择对应操作系统(Windows、Mac或Linux),将安装包下载至计算机。安装过程中建议暂时禁用杀毒软件或防火墙,确保安装顺利。完成后,用户需创建Gate.io账户以开始使用。

如何解决Linux终端中查看Python版本时遇到的权限问题? 如何解决Linux终端中查看Python版本时遇到的权限问题? Apr 01, 2025 pm 05:09 PM

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

在Docker环境中使用PECL安装扩展时为什么会报错?如何解决? 在Docker环境中使用PECL安装扩展时为什么会报错?如何解决? Apr 01, 2025 pm 03:06 PM

在Docker环境中使用PECL安装扩展时报错的原因及解决方法在使用Docker环境时,我们常常会遇到一些令人头疼的问�...

如何在系统重启后自动设置unixsocket的权限? 如何在系统重启后自动设置unixsocket的权限? Mar 31, 2025 pm 11:54 PM

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

PHP连接MySQL后页面空白,die()函数无效是什么原因? PHP连接MySQL后页面空白,die()函数无效是什么原因? Apr 01, 2025 pm 03:03 PM

PHP连接MySQL后页面空白,die()函数失效的原因分析在学习PHP和MySQL数据库连接的过程中,常常会遇到一些让人困惑...

gate.io官网注册安装包链接 gate.io官网注册安装包链接 Feb 21, 2025 pm 08:15 PM

Gate.io 是一款备受赞誉的加密货币交易平台,以其广泛的代币选择、低廉的交易费用和用户友好的界面而闻名。凭借其先进的安全功能和优秀的客户服务,Gate.io 为交易者提供一个可靠且便利的加密货币交易环境。想要加入 Gate.io 的行列,欢迎点击提供的链接下载官方注册安装包,开启您的加密货币交易之旅。

如何在LAMP架构下高效整合Node.js或Python服务? 如何在LAMP架构下高效整合Node.js或Python服务? Apr 01, 2025 pm 02:48 PM

在LAMP架构下整合Node.js或Python服务许多网站开发者都面临这样的问题:已有的LAMP(Linux Apache MySQL PHP)架构网站需要...

See all articles