恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

MySQL访问个人学习笔记

  • 首页
  • 资讯中心
  • /
  • MySQL访问个人学习笔记

相关资讯

Day85-全链路压测体系搭建:从JMeter到生产压测平台 2026/10/10 12:10:44
PID三作用详解与整定口诀:一张图看懂比例、积分、微分 2026/10/10 12:10:44
基于PJ85718DM与STM32F413RH的多点温度监测系统设计与实现 2026/10/10 12:10:44

最新资讯

论文精读:TileLang 的可组合平铺编程模型,凭什么在 NVIDIA/AMD 上追平甚至反超手写库?
嵌入式架构设计利器:AADL与OSATE2建模分析实战
多进程TCP并发服务器实战:从fork到信号处理
开源掌机入门指南:从刷机到游戏库整理的完整折腾手册
嵌入式温度监测实战:PJ85718DM与ATmega6450的本地及远程测温方案
TurboQuant原理解析上篇:为什么随机正交旋转能让KV Cache量化几乎无损

今日推荐

Codex 总用英文回答?从 AGENTS.md 到 config.toml 的中文输出调优指南
OpenClaw 自定义插件开发完整指南(2026最新版):从 TypeScript 到 npm 发布
基于Spark的电影推荐系统全链路实战:从爬虫到Web展示

本周热门

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

MySQL访问个人学习笔记

发布时间:2026/10/10 12:10:44
MySQL访问个人学习笔记 一、MySQL访问的本质在前面几篇博客中已完成了数据库的基本使用和原理相关学习和梳理本篇介绍如何使用语言连接MySQL。已知MySQL有客户端和服务端程序员要做的就是编写业务逻辑将需求发给客户端客户端进而访问服务端并将结果返回给主程序所以一开始在shell中调用systemctl start mysql就是启动服务端进程而mysql登录就是打开客户端并连接服务器二、访问相关方法介绍为了操作数据库资源一开始需创建对应的MYSQL结构体对象并初始化。像这种用于在程序中唯一标识、引用和操作特定的对象或系统资的数据类型通常被称为句柄。MYSQL *my mysql_init(NULL);初始化完毕后需连接到数据库如果是远端登录要求数据库提前创建好允许远端登录的用户用户需要具备操作的权限。连接需要的参数大多和在shell上进行MySQL登录用到的差不多。需注意的是链接也有自己的字符集可以理解成当前程序的字符集比如你要插入数据的话是以当前程序的字符集为标准的。而已为了不和数据库字符集冲突需要重新设置链接字符集。mysql_set_character_set(my, utf8);代码示例如下//函数原型 /*MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long clientflag);*/ const std::string host 127.0.0.1;//本地登录 const std::string user Cuser; const std::string passward 1234567; const std::string db Ctest;//数据库名 const unsigned int port 3306;//这里端口号和mysql配置文件中的端口号相同可查询或修改 int main() { // printf(mysql client Version: %s\n, mysql_get_client_info()); MYSQL *my mysql_init(NULL); // 初始化MYSQL类 if (my nullptr) { std::cerr mysql init fail std::endl; return 1; } // 连接数据库 if (mysql_real_connect(my, host.c_str(), user.c_str(), passward.c_str(), db.c_str(), port, nullptr, 0) nullptr) { std::cerr mysql connect fail std::endl; return 2; } // 无法连接 std::cout mysql connect success std::endl; // 更改编码集 mysql_set_character_set(my, utf8); }随后就可以调用接口操作数据库了std::string insertsqlinsert into user values(张三,555,金榜花园); int flag mysql_query(my, insertsql.c_str()); if (flag 0) { std::cerr do sql fail std::endl; return 3; }插入、删除和修改都是单向的客户端只需要返回是否执行成功即可比较复杂的是查询语句即便客户端能把结果给到主程序也需要配套的读取数据的机制。当读取命令执行成功后创建MYSQL_RES结构体指针并调用mysql_store_resul函数来接收指定MYSQL对象的结果。既然创建的是指针说明函数自动为其申请了空间使用完毕后需释放。MYSQL_RES *res mysql_store_result(my); /*后续操作...*/ mysql_free_result(res);//释放结果集数据在MYSQL_RES结构体中的存放形式如图在一维数组中存放数据行数个char**每个二级指针又指向一个char*数组每个char*指向的就是某行某列的数据。随后可以调用mysql_num_rows()和mysql_num_fields()获取返回数据的行列数再引入MYSQL_ROWchar**类型别名并调用 mysql_fetch_row()来获取单行指针该结构相当于指向结果某行的char**根据行数决定要调用多少次mysql_fetch_row()根据列数遍历具体全部数据。注1mysql_fetch_row()每次调用后会自动指向下一行不需要主程序控制。注2如果想获取列名则调用mysql_fetch_fields(),一次返回所有字段定义的数组配合mysql_num_fields()使用代码如下MYSQL_RES *res mysql_store_result(my); int row mysql_num_rows(res); int fi mysql_num_fields(res); MYSQL_FIELD *field mysql_fetch_fields(res); int i 0; for (; i fi; i) { std::cout field[i].name ; } std::cout std::endl; i 0; MYSQL_ROW line; for (; i row; i) { line mysql_fetch_row(res); int j 0; for (; j fi; j) { std::cout line[j] ; } std::cout std::endl; }三、浅谈从网页到数据库的流程注册在正式提供服务之前需要提前为待存放的数据建立多个数据库。用户打开浏览器网页发起连接请求即三次握手那一套流程服务器随即应答并返回登录页面。用户点击注册跳转到注册页面后输入用户名和密码服务器通过脚本语言如 Java、Python 等对请求进行解析随后经由中间件和负载均衡机制将数据分发到对应的数据库及数据表中。各数据库之间会定期进行数据同步以保证数据的一致性。登录浏览器会先检查该账号是否存在 Cookie 缓存若存在则可能直接完成登录需要注意的是Cookie 并非账号密码的副本而是用于验证当前会话是否有效的标志若不存在服务器会先调用 select 语句验证该账号在数据库中是否存在若存在则正常登录即校验密码哈希运算的结果是否与数据库中的记录相匹配。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号