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 ...
最新文章
- vim实用技巧-笔记(第九章)
- Windows Vista Beta 1试用体会
- 基于Schema配置的AOP
- ZOJ4024 Peak
- bom_clear.php,thinkphp清除BOM方法
- Appfuse2学习笔记--GzipFilter的应用
- wxpython隐藏panel_在wxPython中绘制到Frame内部的Panel
- python tkinter
- 【转】javascript弹出固定大小的窗口页面
- 路孚特:300天350个版本,旗舰移动产品“0”到“1”的交付之路
- OTSU算法实现二值化
- 845 数组中的最长山脉
- Fujitsu Diagnostic(硬盘坏道检测工具)v6.8绿色版
- SQL 升序、降序排列
- Install Windows Vista Service Pack 2 (SP2)
- 上传即可使用的在线缩短网址源码
- 理解promise、promise.all、promise.race
- mysql root password_MYSQL安装时解决要输入current root password的方案
- “有些委屈如果要一辈子背在身上,那我宁愿犯法。任何事情,你要给我一个说法,你不给我一个说法,我就给你一个说法。”
- 苹果5壁纸_元气壁纸软件-元气壁纸安卓版下载v1.0.2
热门文章
- 华为轮值主席鸿蒙,鸿蒙2.0已开源 华为轮值董事长:今年至少3亿设备搭载鸿蒙系统...
- linux ubuntu pkg-config工具的使用(源代码编译库接口查询工具)
- 正常shell bash脚本文件最后一行末尾是否应该添加换行符?(应该另起一行)
- 标记语言 编程语言 脚本语言分别有哪些? 区别是什么?
- python中的'\b'、'\r'
- Java 常见的OOM类型总结
- vb调用matlab工具箱,Matlab与VB集成 - 关于VB的经验之谈 - VB爱好者乐园(VBGood) - 关于VB的经验,电子教程,代码,控件,论坛,博客,微博等....
- 设计模式-软件架构设计七大原则及开闭原则详解
- 怎么把php的文件链接成html,怎么把动态的php文件转换成静态的html文件,html文件是php文件…...
- matlab 倒数第二个位置_Matlab中在数据分析的使用