C语言操作MySQL-----又一个小技巧
C语言操作MySQL
- 连接MySQL
- 常用数据库操作函数
- 查询操作
- 1、`mysql_query()`函数
- 插入操作
- 修改操作
- 删除操作
在开始之前需要进行环境的配置,请参考这篇博客:
VS2019配置MySQL环境
连接MySQL
需要用到函数:mysql_real_connect()
其语法格式如下:
MYSQL* mysql_real_connect(MYSQL* connect,//已经初始化的连接句柄结构const char* server_host, //可以是主机名,也可以是IP地址,如果是主机可以用(localhost)const char* sql_user_name,//MySQL的数据库的用户名,默认是rootconst char* sql_password, //root账户的密码,默认情况下没有密码,即NULLconst char* db_name,//要连接的数据库,如果为空,则连接到默认的数据库test中unsigned int port_number,//数据库的端口,经常设置为0,也可以是3306const char* unix_socket_name,//经常设置为NULLunsigned int flags //经常设置为0
);
例子:
//初始化mysqlmysql_init(&mysql); //连接mysql,数据库if (!(mysql_real_connect(&mysql, "127.0.0.1", "root", "123", "test", 0, NULL, 0))) //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去{printf("Error connecting to database:%s\n", mysql_error(&mysql));return false;}else{MessageBoxA(NULL, "连接MYSQL数据成功!", "消息", MB_OK);printf("Connected...\n");return true;}
常用数据库操作函数
函数 | 描述 |
---|---|
mysql_affected_rows() | 返回上次调用查询更改/删除/插入的行数 |
mysql_change_user() | 更改打开连接上的用户和数据库 |
mysql_close() | 关闭数据库 |
mysql_commit() | 提交事务 |
mysql_real_connect() | 连接到MySQL服务器 |
mysql_error() | 返回上次调用的MySQL函数的错误信息 |
mysql_fetch_fields() | 返回字段结构的数组 |
mysql_fetch_row() | 从结果集中获取下一行 |
mysql_num_fields() | 返回结果集中的列数 |
mysql_num_rows() | 返回结果集中的行数 |
mysql_query() | 执行指定为“以NULL终结的字符串”的SQL查询 |
mysql_rollback() | 回滚事务 |
mysql_select_db() | 选择数据库 |
mysql_store_result() | 检索完整的结果集至客户端 |
在 书写SQL语句时,我们的变量需要用单引号括起来。否则得到的是变量本身这个字符串,而不是其中的值。
查询操作
1、mysql_query()
函数
MySQL提供
mysql_query()
函数用于执行SQL语句,执行指定为“以NULL终结的字符串“的SQL查询。
相当于是将SQL用将函数来执行,SQL语句则和c语言无关,可以参考这篇文章:
MySQL基本操作
例如:
if(mysql_query(&mysql,"select * from tb_book")){//查询失败
}else{//查询成功
}
插入操作
插入操作是使用
mysql_query()
函数和 SQL中的插入语句来实现的。
注意
- 插入的数据类型应与被加入列的数据类型对应相同或者系统可以自动转换。
- 添加的数据范围必须在列规定的范围内。
例如:
void Insert()
{char sql[1000] = "insert into tb_book (ID,bookname,author,bookconcern) values(";char dest[2000] ="";strcat_s(dest,sizeof(dest), sql);strcat_s(dest, sizeof(dest), "'");scanf_s("%s", id, 10);strcat_s(dest, sizeof(dest), id); // 将图书馆编号追加到sql语句后面strcat_s(dest, sizeof(dest), "', '");scanf_s("%s", bookname, 50);strcat_s(dest, sizeof(dest), bookname);//图书名printf("\t Author: ");scanf_s("%s", &author, 50);strcat_s(dest, sizeof(dest), "', '");strcat_s(dest, sizeof(dest), author); //作者printf("\t Bookconcern: ");scanf_s("%s", &bookconcern,100);strcat_s(dest, sizeof(dest), "', '");strcat_s(dest, sizeof(dest), bookconcern);//简介strcat_s(dest, sizeof(dest), "');");printf("%s\n", dest);if (mysql_query(&mysql, dest) != 0) {//将错误日志写到文件中printf( "\t Can not insert record!\n");}else{printf("\t Insert success!\n");}
}
在C语言中在执行插入,删除和修改操作时,不用在执行语句后再提交事务。(区别与Python)
修改操作
插入操作是使用
mysql_query()
函数和 SQL中的更新语句来实现的。
例如:
void Update() {printf("\t Bookname:")scanf("%s", &bookname);char sql[1000] = "update tb_book set bookname= '";strcat(dest, sql);strcat(dest, bookname);//图书名printf("\t Author");scanf("%s", &author);strcat(dest, "',author= '"); strcat(dest, author);//作者printf("\t Bookconcern");scanf("%s", &bookconcern);strcat(dest, "',bookconcern= '");strcat(dest, bookconcern);//简介strcat(dest, "' where id = ");strcat(dest, id);if (mysql_query(&mysql, dest) != 0) {//将错误日志写到文件中fprintf(stderr, "\t Can not modify record!\n", mysql_errno(&mysql));}else{printf("\t Modify success!\n")}
}
删除操作
插入操作是使用
mysql_query()
函数和 SQL中的删除语句来实现的。
示例:
void delete() {scanf("%d", &id);sql = "select * from tb_book where id=";strcat(dest, sql);strcat(dest, id);sql = "delect from tb_book where ID= ";printf("%s", dest1);strcat(dest1, sql);strcat(dest1, id);if (mysql_query(&mysql, dest1) != 0) {//将错误日志写到文件中fprintf(stderr, "\t Can not delete record!\n", mysql_errno(&mysql));}else{printf("\t Delete success!\n")}
}
C语言操作MySQL-----又一个小技巧相关推荐
- mysql insert 运算_MySql insert插入操作的3个小技巧分享
1.插入的数据来源自其他表 表A有id, cola 字段 表B有id, cola, colb...等字段,其中id都为主键,cola为相同名字的列 现想将表B中colb>1000的记录都插入表A ...
- c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...
这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...
- C语言操作MYSQL小例子
http://blog.csdn.net/small_qch/article/details/8180678 初学使用用C语言操作MYSQL,写了个小例子,帖上来献丢人一下,呵呵. 程序很简单,先连接 ...
- golang mysql curd_Go 语言操作 MySQL 之 CURD 操作
本文转载于SegmentFault社区 作者:Meng小羽 MySQL 是目前开发中最常见的关系型数据库,使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql- ...
- 10个提升MySQL性能的小技巧
从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...
- python中template是什么意思啊_Python中Template使用的一个小技巧
Python中Template是string中的一个类,可以将字符串的格式固定下来,重复利用. from string import Template s = Template("there ...
- Linux C语言操作MySQL
1.MySQL数据库简介 MySQL是一个开源码的小型关系数据库管理系统,体积小,速度快,总体成本低,开源.MySQL有以下特性: (1) 使用C和C++编写,并使用了多种编译器进行测试,保证源码的可 ...
- 38个MySQL数据库的小技巧
1.如何快速掌握MySQL? 培养兴趣 兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率.当然学习MySQL 5.6也不例外. 夯实基础 计算机领域的技术非常强调基础,刚开始学习可能还 ...
- Oracle中删除数据的一个小技巧
在我带的某个Project中,在开发阶段需要Reload相同的Data到Oracle中来进行测试,因此需要不断的删除数据,简单的Delete操作似乎就OK了,但其实不然.我们到知道建表的时候需要Tab ...
最新文章
- 手动添加Cookie
- 解题报告:【kuangbin带你飞】专题九 连通图
- Hibernate 缓存
- matlab产生一组均为一的矩阵,在matlab中如何从一组数中得到随机数组成一个n*n的矩阵...
- 文字滚动的另一方法 拆分文字来做到文字滚动
- 【CVPR2019】 教程 Tutorials List
- rcnn代码实现_轻松学Pytorch实现自定义对象检测器
- 英语词汇辨异 —— 同音字
- 尺取法 POJ 3320 Jessica's Reading Problem
- C语言基础专题 - 数据类型与强制类型转换(编辑中)
- [淘宝商城首页]-图片灯箱明暗遮罩效果之jquery版
- 走进社交网络 二期功能完成
- C语言:计算三角形面积与周长
- 2010年度十大心理学发现
- 实用必备:可以迅速让你出口成章的英语短语
- Python数据分析之pandas统计分析
- 做程序员累了想要转行?我想给大家分享一下看法
- Java删除StringBuilder最后一个逗号
- 【问题思考总结】为什么基础解系中两个自由变量对应两个线性无关的解?
- 中国地质大学计算机学院保研率,北京高校保研率、考研率排行榜
热门文章
- Linux ubuntu16.04 卸载搜狗输入法(sogoupinyin)
- OpenCV Mat类详解和用法(官网原文)
- python opencv imshow()显示窗口中文字符出现乱码 解决方案:将utf-8转换为gbk(未能完全解决)
- Intel Realsense D435 python 从深度相机realsense生成pcl点云
- Java进阶:CAS原理详解
- 索引使用的限制条件,sql优化有哪些,数据同步问题(缓存和数据库),缓存优化
- 第十届蓝桥杯c语言b组试题,2019年第十届蓝桥杯(决赛)国赛B组C++(B)
- mysql查询每个机构下的账号总数_MySQL高可用方案:实践篇
- plc模拟器软件_关于PLC虚拟化的思考当下及未来
- python listbox输入内容自动换行_python中的图像界面设计(二)