易语言MySQL数据库操作实战:从连接到增删改查

张开发
2026/4/17 18:31:57 15 分钟阅读

分享文章

易语言MySQL数据库操作实战:从连接到增删改查
1. 易语言与MySQL数据库初探第一次接触易语言操作MySQL数据库时我完全被那些专业术语吓到了。什么数据库句柄、SQL语句、记录集听起来就像天书一样。但实际用起来才发现易语言已经把复杂的技术封装得非常友好就像搭积木一样简单。这里我用最直白的语言带你从零开始掌握这个实用技能。易语言是国产编程语言中的亲民派特别适合开发Windows桌面应用。而MySQL作为最流行的开源数据库两者结合能轻松搞定各种数据管理需求。比如做个学生成绩管理系统、小型进销存软件或者个人记账工具都是绝配。我去年就用这个组合给学校图书馆做了个借阅管理系统3000多册图书数据稳稳当当。要玩转这个组合首先得准备好环境。MySQL社区版直接官网下载安装就行记得勾选添加环境变量。易语言这边需要确认是否加载了mysql支持库在菜单栏工具-支持库配置里勾选mysql.fne。如果找不到这个选项可能需要单独下载支持库文件。我第一次就栽在这里折腾半天才发现是易语言版本不匹配。2. 建立数据库连接2.1 基础连接操作连接数据库就像打电话得知道对方的号码IP地址、用户名和密码。易语言提供了连接MySql这个超级好用的命令看这段代码.版本 2 .支持库 mysql .子程序 连接数据库 .局部变量 数据库句柄, 整数型 数据库句柄 连接MySql (localhost, root, 123456, school, 3306) .如果真 (数据库句柄 0) 信息框 (连接失败请检查\n1. MySQL服务是否启动\n2. 用户名密码是否正确\n3. 数据库是否存在, 0, 错误提示, ) 返回 (0) .如果真结束 返回 (数据库句柄)这里有几个实战经验分享localhost可以换成127.0.0.1如果是远程数据库就填服务器IP3306是MySQL默认端口如果修改过要对应调整数据库句柄相当于连接凭证后续操作都要用到2.2 连接池优化技巧实际项目中我发现频繁连接断开很耗资源于是搞了个连接池方案。原理很简单程序启动时建立连接全程复用这个连接。就像去网吧包夜一次性交钱随便玩比按小时计费划算多了。.版本 2 .程序集变量 全局_数据库句柄, 整数型 .子程序 __启动窗口_创建完毕 全局_数据库句柄 连接MySql (localhost, root, 123456, school, 3306) .子程序 __启动窗口_将被销毁 断开MySql (全局_数据库句柄)注意要在程序退出时记得断开连接否则会导致连接泄漏。我有次忘了写断开代码第二天发现数据库连接数爆满被DBA追着骂。3. 数据增删改查实战3.1 增插入数据往数据库添加记录就像填写表格SQL语句就是我们的笔。易语言里可以用取文本函数动态拼接SQL.版本 2 .支持库 mysql .子程序 添加学生 .参数 姓名, 文本型 .参数 年龄, 整数型 .局部变量 SQL, 文本型 SQL 取文本 (insert into students (name, age) values (%s, %d), 姓名, 年龄) 执行SQL语句 (全局_数据库句柄, SQL)这里有个血泪教训字符串值必须用单引号包裹数字不用。我有次把年龄也加了引号结果数据库里年龄全变成0排查了半天才发现。3.2 删清理数据删除操作要格外小心没加条件会清空整张表建议先用查询确认要删的记录.版本 2 .支持库 mysql .子程序 删除学生 .参数 学号, 文本型 .局部变量 SQL, 文本型 SQL 取文本 (delete from students where id%s, 学号) 执行SQL语句 (全局_数据库句柄, SQL)重要的事情说三遍备份备份备份有次我手滑把where条件写错了瞬间删掉300多条记录幸好有前一天备份。3.3 改更新数据更新操作要注意条件精确否则可能误改多条记录。比如修改学生信息.版本 2 .支持库 mysql .子程序 更新学生信息 .参数 学号, 文本型 .参数 新姓名, 文本型 .局部变量 SQL, 文本型 SQL 取文本 (update students set name%s where id%s, 新姓名, 学号) 执行SQL语句 (全局_数据库句柄, SQL)3.4 查数据检索查询是使用最频繁的操作分精确查询和模糊查询两种。精确查询用等号模糊查询用like配合通配符.版本 2 .支持库 mysql .支持库 spec .子程序 查询学生 .参数 关键词, 文本型 .局部变量 SQL, 文本型 .局部变量 记录集句柄, 整数型 .局部变量 姓名, 文本型 .局部变量 年龄, 整数型 SQL 取文本 (select * from students where name like %%%s%%, 关键词) 记录集句柄 取记录集 (全局_数据库句柄) .计次循环首 (取记录集行数 (记录集句柄), ) 读字段值 (记录集句柄, name, 姓名) 读字段值 (记录集句柄, age, 年龄) 调试输出 (姓名 姓名 年龄 到文本 (年龄)) 到下一行 (记录集句柄) .计次循环尾 () 释放记录集 (记录集句柄)注意模糊查询的通配符要用两个百分号因为易语言里%是格式化字符。这个坑我踩过三次才长记性。4. 实战案例学生管理系统现在我们把所有知识串起来做个完整的学生信息管理模块。先设计数据库表结构CREATE TABLE students ( id VARCHAR(20) PRIMARY KEY, name VARCHAR(50) NOT NULL, gender CHAR(1), age INT, class VARCHAR(50) );4.1 添加学生功能.版本 2 .支持库 mysql .子程序 添加学生 .参数 学号, 文本型 .参数 姓名, 文本型 .参数 性别, 文本型 .参数 年龄, 整数型 .参数 班级, 文本型 .局部变量 SQL, 文本型 SQL 取文本 (insert into students values (%s,%s,%s,%d,%s), 学号, 姓名, 性别, 年龄, 班级) 执行SQL语句 (全局_数据库句柄, SQL)4.2 学生信息查询支持按学号精确查询和按姓名模糊查询.版本 2 .支持库 mysql .支持库 spec .子程序 查询学生 .参数 查询类型, 整数型 1-按学号 2-按姓名 .参数 查询内容, 文本型 .局部变量 SQL, 文本型 .局部变量 记录集句柄, 整数型 .判断开始 (查询类型 1) SQL 取文本 (select * from students where id%s, 查询内容) .默认 SQL 取文本 (select * from students where name like %%%s%%, 查询内容) .判断结束 记录集句柄 取记录集 (全局_数据库句柄) 处理查询结果...4.3 数据统计功能比如统计各班级人数.版本 2 .支持库 mysql .支持库 spec .子程序 班级人数统计 .局部变量 SQL, 文本型 .局部变量 记录集句柄, 整数型 SQL select class, count(*) as num from students group by class 记录集句柄 取记录集 (全局_数据库句柄) 处理统计结果...5. 避坑指南5.1 SQL注入防范直接拼接SQL有安全风险比如用户输入 or 11就会导致数据泄露。解决方法是用参数化查询.版本 2 .支持库 mysql .子程序 安全登录 .参数 用户名, 文本型 .参数 密码, 文本型 .局部变量 SQL, 文本型 .局部变量 记录集句柄, 整数型 SQL select * from users where username? and password? 记录集句柄 取记录集 (全局_数据库句柄, SQL, 用户名, 密码)5.2 连接超时处理网络不稳定时连接可能超时需要增加重试机制.版本 2 .支持库 mysql .子程序 稳健连接 .局部变量 重试次数, 整数型 .局部变量 数据库句柄, 整数型 .判断循环首 (重试次数 3) 数据库句柄 连接MySql (localhost, root, 123456, school, 3306) .如果真 (数据库句柄 ≠ 0) 跳出循环 () .如果真结束 延迟 (1000) 等待1秒 重试次数 重试次数 1 .判断循环尾 ()5.3 大数据量优化当数据量超过万条时查询会变慢。我常用的优化方法只查询需要的字段避免select *对常用查询条件建立索引分页查询limit 10 offset 20SQL select id,name from students where class三年级 limit 100 offset 2006. 调试技巧分享6.1 SQL语句打印执行SQL前先打印出来检查调试输出 (即将执行的SQL SQL) 执行SQL语句 (全局_数据库句柄, SQL)6.2 错误信息获取MySQL执行出错时可以获取详细错误信息.版本 2 .支持库 mysql .子程序 获取错误信息 .局部变量 错误信息, 文本型 错误信息 取错误文本 (全局_数据库句柄) 信息框 (错误信息, 0, 数据库错误, )6.3 事务处理多个操作要保持原子性时用事务.版本 2 .支持库 mysql 开始事务 (全局_数据库句柄) 执行SQL语句 (全局_数据库句柄, update account set balancebalance-100 where id1) 执行SQL语句 (全局_数据库句柄, update account set balancebalance100 where id2) .如果 (提交事务 (全局_数据库句柄)) 信息框 (转账成功, 0, , ) .否则 回滚事务 (全局_数据库句柄) 信息框 (转账失败, 0, , ) .如果结束

更多文章