易语言数据库操作初步:内置Ado引擎与SQLite3快速上手

一、学习目标与重点
💡学习目标 :1. 理解易语言内置数据库(基于Access的Ado引擎)的架构与特点;2. 掌握内置数据库的连接、查询、插入、更新、删除等核心操作(命令/可视化两种方式);3. 学会编写基础SQL语句(SELECT/INSERT/UPDATE/DELETE),并在易语言中执行;4. 掌握轻量级SQLite3数据库的集成方法(静态链接库配置);5. 通过真实案例(个人通讯录管理系统)巩固所学知识。
⚠️学习重点:内置数据库的连接字符串配置、SQL语句的字段匹配、SQLite3的DLL静态声明、数据类型的易语言<->数据库转换、错误处理。
二、易语言内置数据库概述
2.1 内置数据库的基本概念
易语言内置数据库基于Microsoft ActiveX Data Objects (Ado) 引擎,默认支持Access数据库(.mdb/.accdb格式)。它提供了两种操作方式:
- 可视化命令方式:通过"数据库操作组件"(如数据库连接组件、记录集组件、数据表浏览组件)和内置命令(如"打开数据库""执行SQL语句")实现,适合入门级开发;
- SQL语句方式:直接编写SQL语句,通过"数据库连接组件.执行SQL语句"命令执行,适合复杂数据操作。
2.2 内置数据库的特点
✅优点:
- 无需额外配置:易语言开发环境已集成Ado引擎,无需安装数据库服务器;
- 可视化操作:支持通过组件向导和可视化界面创建、编辑数据库;
- 操作简单:内置了大量简化命令,如"打开记录集""添加新记录";
- 兼容性好:支持Access数据库的所有版本,也可通过ODBC连接其他数据库(如MySQL、SQL Server)。
❌缺点:
- 性能有限:Access数据库是文件型数据库,处理大量数据(如10万条以上)时性能较差;
- 并发访问限制:Access数据库只支持10个以内的并发用户,多用户场景下会出现数据锁定问题;
- 安全性较低:Access数据库的密码保护容易被破解。
三、内置数据库的基本操作(可视化命令方式)
3.1 创建和打开数据库
3.1.1 创建新数据库
- 打开易语言开发环境,选择"菜单-工具-数据库操作组件向导";
- 在弹出的对话框中选择"创建新数据库",点击"下一步";
- 选择数据库文件的保存路径和文件名(如"个人通讯录.mdb"),点击"下一步";
- 配置数据库的密码保护(可选),点击"下一步";
- 创建数据表(如"联系人表"),设置字段名、数据类型、长度、是否允许空值、是否为主键,点击"完成"。
3.1.2 打开已存在的数据库
epl
.版本 2
.支持库 eDB
.子程序 打开数据库, 逻辑型, 公开, 使用可视化命令方式打开数据库
.参数 数据库文件路径, 文本型, , 数据库文件路径(.mdb/.accdb)
.参数 数据库密码, 文本型, 可空, 数据库密码(无密码时为空)
.局部变量 数据库连接组件, 对象, 静态, "数据库操作组件"
' 初始化数据库连接组件
.如果真 (数据库连接组件.对象指针 = 0)
数据库连接组件.创建 ("ADODB.Connection", , )
.如果真结束
' 连接字符串配置(Access 2003及以下版本:Provider=Microsoft.Jet.OLEDB.4.0;Access 2007及以上版本:Provider=Microsoft.ACE.OLEDB.12.0)
.局部变量 连接字符串, 文本型
连接字符串 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 数据库文件路径
.如果真 (数据库密码 ≠ "")
连接字符串 = 连接字符串 + ";Jet OLEDB:Database Password=" + 数据库密码
.如果真结束
' 打开数据库
.如果真 (数据库连接组件.是否打开 () = 真)
数据库连接组件.关闭 ()
.如果真结束
.如果 (数据库连接组件.打开 (连接字符串, , , ) = 假)
' 输出错误信息
调试输出 ("打开数据库失败!路径:", 数据库文件路径, " 错误信息:", 数据库连接组件.错误.描述)
信息框 ("打开数据库失败!" + 数据库连接组件.错误.描述, 0, "错误")
返回 (假)
.如果结束
' 提示用户打开成功
信息框 ("数据库打开成功!路径:" + 数据库文件路径, 0, "提示")
返回 (真)
3.2 查询、显示数据
epl
.版本 2
.支持库 eDB
.子程序 查询并显示数据, , 公开
.参数 查询SQL语句, 文本型, , 查询SQL语句(如SELECT * FROM 联系人表)
.局部变量 记录集组件, 对象, 静态, "数据库操作组件"
.局部变量 字段索引, 整数型
.局部变量 表项索引, 整数型
.局部变量 字段值, 文本型
' 初始化记录集组件
.如果真 (记录集组件.对象指针 = 0)
记录集组件.创建 ("ADODB.Recordset", , )
.如果真结束
' 执行查询
记录集组件.打开 (查询SQL语句, 数据库连接组件, 1, 3) ' 1:键集驱动,3:只读
' 判断是否查询到数据
.如果 (记录集组件.记录数量 = 0)
信息框 ("未查询到符合条件的数据!", 0, "提示")
返回 ()
.如果结束
' 清空超级列表框
超级列表框_联系人.全部删除 ()
' 遍历记录集并显示数据
.局部变量 记录数, 整数型
记录数 = 记录集组件.记录数量
记录集组件.移到首记录 ()
判断循环首 (记录集组件.是否到记录尾 () = 假)
' 插入新表项
表项索引 = 超级列表框_联系人.插入表项 (, , , , , )
' 遍历所有字段并设置标题
计次循环首 (记录集组件.字段数量, 字段索引)
' 读取字段值
.如果 (记录集组件.字段 (字段索引 - 1).类型 = 12) ' 日期类型
字段值 = 到文本 (记录集组件.字段 (字段索引 - 1).值)
.否则
字段值 = 到文本 (记录集组件.字段 (字段索引 - 1).值)
.如果结束
' 设置标题
超级列表框_联系人.置标题 (表项索引, 字段索引 - 1, 字段值)
计次循环首结束
' 移到下一条记录
记录集组件.移到下一条 ()
判断循环尾 ()
' 提示用户查询成功
信息框 ("查询成功!共找到:" + 到文本 (记录数) + "条记录", 0, "提示")
3.3 插入、更新、删除数据
3.3.1 插入新记录(使用"添加新记录"命令)
epl
.版本 2
.支持库 eDB
.子程序 插入新记录_可视化, , 公开
.参数 姓名, 文本型, , 姓名
.参数 电话, 文本型, , 电话
.参数 邮箱, 文本型, 可空, 邮箱(可空)
.参数 地址, 文本型, 可空, 地址(可空)
.参数 备注, 文本型, 可空, 备注(可空)
.局部变量 记录集组件, 对象, 静态
' 初始化记录集组件(如果未初始化)
.如果真 (记录集组件.对象指针 = 0)
查询并显示数据 ("SELECT * FROM 联系人表")
.如果真结束
' 添加新记录
记录集组件.添加新记录 ()
' 设置字段值
记录集组件.字段 ("姓名").值 = 姓名
记录集组件.字段 ("电话").值 = 电话
.如果真 (邮箱 ≠ "")
记录集组件.字段 ("邮箱").值 = 邮箱
.如果真结束
.如果真 (地址 ≠ "")
记录集组件.字段 ("地址").值 = 地址
.如果真结束
.如果真 (备注 ≠ "")
记录集组件.字段 ("备注").值 = 备注
.如果真结束
' 更新到数据库
记录集组件.更新 ()
' 刷新超级列表框
查询并显示数据 ("SELECT * FROM 联系人表")
3.3.2 更新、删除记录(使用SQL语句方式更高效)
epl
.版本 2
.支持库 eDB
.子程序 更新记录_可视化, , 公开
.参数 联系人ID, 整数型, , 联系人ID(主键)
.参数 姓名, 文本型, , 姓名
.参数 电话, 文本型, , 电话
.参数 邮箱, 文本型, 可空, 邮箱(可空)
.参数 地址, 文本型, 可空, 地址(可空)
.参数 备注, 文本型, 可空, 备注(可空)
.局部变量 SQL语句, 文本型
.局部变量 受影响行数, 整数型
' 构建更新SQL语句
SQL语句 = "UPDATE 联系人表 SET 姓名='" + 姓名 + "', 电话='" + 电话 + "'"
.如果真 (邮箱 ≠ "")
SQL语句 = SQL语句 + ", 邮箱='" + 邮箱 + "'"
.如果真结束
.如果真 (地址 ≠ "")
SQL语句 = SQL语句 + ", 地址='" + 地址 + "'"
.如果真结束
.如果真 (备注 ≠ "")
SQL语句 = SQL语句 + ", 备注='" + 备注 + "'"
.如果真结束
SQL语句 = SQL语句 + " WHERE 联系人ID=" + 到文本 (联系人ID)
' 执行SQL语句
受影响行数 = 数据库连接组件.执行SQL语句 (SQL语句)
' 判断是否更新成功
.如果 (受影响行数 ≤ 0)
信息框 ("更新记录失败!受影响行数:" + 到文本 (受影响行数) + " 错误信息:" + 数据库连接组件.错误.描述, 0, "错误")
返回 ()
.如果结束
' 刷新超级列表框
查询并显示数据 ("SELECT * FROM 联系人表")
四、SQL语句基础与内置数据库操作(SQL方式)
4.1 SQL语句的基本分类
SQL(Structured Query Language,结构化查询语言)是操作关系型数据库的标准化语言,分为以下几类:
- 数据查询语言(DQL):SELECT,用于查询数据;
- 数据操作语言(DML):INSERT、UPDATE、DELETE,用于插入、更新、删除数据;
- 数据定义语言(DDL):CREATE、ALTER、DROP,用于创建、修改、删除数据表、视图、索引等;
- 数据控制语言(DCL):GRANT、REVOKE,用于授予、收回用户权限;
- 事务控制语言(TCL):BEGIN TRANSACTION、COMMIT、ROLLBACK,用于控制事务的提交和回滚。
4.2 常用SQL语句的编写与执行
4.2.1 查询数据(SELECT)
epl
.版本 2
.支持库 eDB
.子程序 查询数据_SQL, , 公开
.参数 查询条件, 文本型, 可空, 查询条件(如姓名 LIKE '%李%' OR 电话 LIKE '138%')
.局部变量 SQL语句, 文本型
' 构建查询SQL语句
SQL语句 = "SELECT 联系人ID, 姓名, 电话, 邮箱 FROM 联系人表"
.如果真 (查询条件 ≠ "")
SQL语句 = SQL语句 + " WHERE " + 查询条件
.如果真结束
SQL语句 = SQL语句 + " ORDER BY 姓名 ASC" ' 按姓名升序排序
' 执行查询并显示数据
查询并显示数据 (SQL语句)
4.2.2 插入数据(INSERT)
epl
.版本 2
.支持库 eDB
.子程序 插入数据_SQL, , 公开
.参数 姓名, 文本型, , 姓名
.参数 电话, 文本型, , 电话
.参数 邮箱, 文本型, 可空, 邮箱(可空)
.参数 地址, 文本型, 可空, 地址(可空)
.参数 备注, 文本型, 可空, 备注(可空)
.局部变量 SQL语句, 文本型
.局部变量 受影响行数, 整数型
' 构建插入SQL语句
SQL语句 = "INSERT INTO 联系人表 (姓名, 电话, 邮箱, 地址, 备注) VALUES ('" + 姓名 + "', '" + 电话 + "', '" + 邮箱 + "', '" + 地址 + "', '" + 备注 + "')"
' 执行SQL语句
受影响行数 = 数据库连接组件.执行SQL语句 (SQL语句)
' 判断是否插入成功
.如果 (受影响行数 ≤ 0)
信息框 ("插入记录失败!受影响行数:" + 到文本 (受影响行数) + " 错误信息:" + 数据库连接组件.错误.描述, 0, "错误")
返回 ()
.如果结束
' 刷新超级列表框
查询并显示数据 ("SELECT * FROM 联系人表")
五、轻量级SQLite3数据库的集成与使用
5.1 SQLite3数据库的概述
SQLite3是一款开源的轻量级文件型数据库 ,它将整个数据库存储在一个文件中(.db格式),具有以下特点:
✅优点:
- 无需服务器:SQLite3是嵌入式数据库,无需安装数据库服务器;
- 性能优异:处理大量数据(如100万条以上)时性能远优于Access数据库;
- 并发访问:支持多线程并发访问,采用版本号控制机制避免数据锁定;
- 跨平台:支持Windows、Linux、MacOS、Android等平台;
- 开源免费:SQLite3是开源软件,遵循Public Domain协议,免费用于商业和非商业用途。
5.2 SQLite3数据库的集成(静态链接库配置)
5.2.1 下载SQLite3的DLL文件
- 访问SQLite3官方网站(https://www.sqlite.org/download.html);
- 下载Windows系统的预编译DLL文件(如sqlite3.dll,版本3.40.0及以上);
- 将下载的sqlite3.dll文件复制到易语言开发环境的"lib"目录下(默认路径:C:\Program Files (x86)\EProgram\lib)。
5.2.2 静态声明SQLite3的核心API
epl
.版本 2
.支持库 spec
' SQLite3数据库连接句柄类型
.数据类型 sqlite3, 整数型
' SQLite3查询结果集句柄类型
.数据类型 sqlite3_stmt, 整数型
' 打开SQLite3数据库
.DLL命令 sqlite3_open, 整数型, "sqlite3.dll", "sqlite3_open"
.参数 filename, 文本型, , 数据库文件路径(.db)
.参数 ppDb, sqlite3, 参考, 用于接收数据库连接句柄
' 执行SQL语句(不返回结果集,如INSERT/UPDATE/DELETE)
.DLL命令 sqlite3_exec, 整数型, "sqlite3.dll", "sqlite3_exec"
.参数 db, sqlite3, , 数据库连接句柄
.参数 sql, 文本型, , SQL语句
.参数 callback, 整数型, 可空, 回调函数(不返回结果集时为空)
.参数 arg, 整数型, 可空, 回调函数参数(不返回结果集时为空)
.参数 errmsg, 文本型, 参考, 用于接收错误信息(需要手动释放内存)
' 准备SQL语句(返回结果集,如SELECT)
.DLL命令 sqlite3_prepare_v2, 整数型, "sqlite3.dll", "sqlite3_prepare_v2"
.参数 db, sqlite3, , 数据库连接句柄
.参数 sql, 文本型, , SQL语句
.参数 nByte, 整数型, , SQL语句的字节数(-1表示自动计算)
.参数 ppStmt, sqlite3_stmt, 参考, 用于接收查询结果集句柄
.参数 pzTail, 文本型, 可空, 未执行的SQL语句(为空时忽略)
' 执行查询(获取下一条记录)
.DLL命令 sqlite3_step, 整数型, "sqlite3.dll", "sqlite3_step"
.参数 pStmt, sqlite3_stmt, , 查询结果集句柄
' 读取字段值(整数型)
.DLL命令 sqlite3_column_int, 整数型, "sqlite3.dll", "sqlite3_column_int"
.参数 pStmt, sqlite3_stmt, , 查询结果集句柄
.参数 iCol, 整数型, , 字段索引(从0开始)
' 读取字段值(文本型)
.DLL命令 sqlite3_column_text, 整数型, "sqlite3.dll", "sqlite3_column_text"
.参数 pStmt, sqlite3_stmt, , 查询结果集句柄
.参数 iCol, 整数型, , 字段索引(从0开始)
' 读取字段值(双精度小数型)
.DLL命令 sqlite3_column_double, 双精度小数型, "sqlite3.dll", "sqlite3_column_double"
.参数 pStmt, sqlite3_stmt, , 查询结果集句柄
.参数 iCol, 整数型, , 字段索引(从0开始)
' 释放查询结果集句柄
.DLL命令 sqlite3_finalize, 整数型, "sqlite3.dll", "sqlite3_finalize"
.参数 pStmt, sqlite3_stmt, , 查询结果集句柄
' 关闭SQLite3数据库
.DLL命令 sqlite3_close, 整数型, "sqlite3.dll", "sqlite3_close"
.参数 db, sqlite3, , 数据库连接句柄
' 释放错误信息的内存
.DLL命令 sqlite3_free, , "sqlite3.dll", "sqlite3_free"
.参数 ptr, 整数型, , 错误信息的内存指针
5.3 SQLite3数据库的基本操作
5.3.1 打开和关闭数据库
epl
.版本 2
.支持库 spec
' 程序集数据段定义的数据库连接句柄
.程序集变量 SQLite3连接句柄, sqlite3
.子程序 打开SQLite3数据库, 逻辑型, 公开
.参数 数据库文件路径, 文本型, , 数据库文件路径(.db)
.局部变量 打开结果, 整数型
.局部变量 错误信息, 文本型
' 关闭已打开的数据库
.如果真 (SQLite3连接句柄 ≠ 0)
sqlite3_close (SQLite3连接句柄)
SQLite3连接句柄 = 0
.如果真结束
' 打开新数据库
打开结果 = sqlite3_open (数据库文件路径, SQLite3连接句柄)
.如果 (打开结果 ≠ 0)
' 获取并输出错误信息
sqlite3_errmsg (SQLite3连接句柄, 错误信息)
调试输出 ("打开SQLite3数据库失败!路径:", 数据库文件路径, " 错误信息:", 错误信息)
信息框 ("打开SQLite3数据库失败!" + 错误信息, 0, "错误")
sqlite3_close (SQLite3连接句柄)
SQLite3连接句柄 = 0
返回 (假)
.如果结束
' 提示用户打开成功
信息框 ("SQLite3数据库打开成功!路径:" + 数据库文件路径, 0, "提示")
返回 (真)
5.3.2 创建数据表
epl
.版本 2
.支持库 spec
.子程序 创建SQLite3数据表, 逻辑型, 公开
.参数 数据表名, 文本型, , 数据表名
.局部变量 SQL语句, 文本型
.局部变量 执行结果, 整数型
.局部变量 错误信息, 文本型
' 构建创建数据表的SQL语句
SQL语句 = "CREATE TABLE IF NOT EXISTS " + 数据表名 + " (" + #换行符
SQL语句 = SQL语句 + " 联系人ID INTEGER PRIMARY KEY AUTOINCREMENT," + #换行符
SQL语句 = SQL语句 + " 姓名 TEXT NOT NULL," + #换行符
SQL语句 = SQL语句 + " 电话 TEXT NOT NULL," + #换行符
SQL语句 = SQL语句 + " 邮箱 TEXT," + #换行符
SQL语句 = SQL语句 + " 地址 TEXT," + #换行符
SQL语句 = SQL语句 + " 备注 TEXT," + #换行符
SQL语句 = SQL语句 + " 创建时间 DATETIME DEFAULT CURRENT_TIMESTAMP" + #换行符
SQL语句 = SQL语句 + ")"
' 执行SQL语句
执行结果 = sqlite3_exec (SQLite3连接句柄, SQL语句, , , 错误信息)
.如果 (执行结果 ≠ 0)
' 输出错误信息
调试输出 ("创建数据表失败!表名:", 数据表名, " 错误信息:", 错误信息)
信息框 ("创建数据表失败!" + 错误信息, 0, "错误")
' 释放错误信息的内存
sqlite3_free (取指针地址 (错误信息))
返回 (假)
.如果结束
' 释放错误信息的内存
sqlite3_free (取指针地址 (错误信息))
' 提示用户创建成功
信息框 ("数据表创建成功!表名:" + 数据表名, 0, "提示")
返回 (真)
5.3.3 查询数据(返回结果集)
epl
.版本 2
.支持库 spec
.支持库 eGrid
.子程序 查询SQLite3数据, , 公开
.参数 查询SQL语句, 文本型, , 查询SQL语句(如SELECT * FROM 联系人表)
.局部变量 准备结果, 整数型
.局部变量 查询结果集句柄, sqlite3_stmt
.局部变量 字段索引, 整数型
.局部变量 表项索引, 整数型
.局部变量 字段值, 文本型
.局部变量 错误信息, 文本型
' 清空超级列表框
超级列表框_联系人.全部删除 ()
' 准备SQL语句
准备结果 = sqlite3_prepare_v2 (SQLite3连接句柄, 查询SQL语句, -1, 查询结果集句柄, )
.如果 (准备结果 ≠ 0)
' 获取并输出错误信息
sqlite3_errmsg (SQLite3连接句柄, 错误信息)
调试输出 ("准备SQL语句失败!SQL:", 查询SQL语句, " 错误信息:", 错误信息)
信息框 ("准备SQL语句失败!" + 错误信息, 0, "错误")
sqlite3_free (取指针地址 (错误信息))
return ()
.如果结束
' 执行查询并遍历结果集
.局部变量 查询结果, 整数型
查询结果 = sqlite3_step (查询结果集句柄)
判断循环首 (查询结果 = 100) ' 100:SQLITE_ROW,表示查询到一条记录
' 插入新表项
表项索引 = 超级列表框_联系人.插入表项 (, , , , , )
' 遍历所有字段并设置标题
计次循环首 (sqlite3_column_count (查询结果集句柄), 字段索引)
' 读取字段值(根据字段类型读取)
.局部变量 字段类型, 整数型
字段类型 = sqlite3_column_type (查询结果集句柄, 字段索引 - 1)
.如果 (字段类型 = 1) ' 整数型
字段值 = 到文本 (sqlite3_column_int (查询结果集句柄, 字段索引 - 1))
.否则
.如果 (字段类型 = 2) ' 双精度小数型
字段值 = 到文本 (取小数位 (sqlite3_column_double (查询结果集句柄, 字段索引 - 1), 2))
.否则
.如果 (字段类型 = 3) ' 文本型
.局部变量 文本指针, 整数型
文本指针 = sqlite3_column_text (查询结果集句柄, 字段索引 - 1)
.如果真 (文本指针 ≠ 0)
字段值 = 指针到文本 (文本指针, , #编码_UTF_8)
.如果真结束
.如果结束
.如果结束
.如果结束
' 设置标题
超级列表框_联系人.置标题 (表项索引, 字段索引 - 1, 字段值)
计次循环首结束
' 移到下一条记录
查询结果 = sqlite3_step (查询结果集句柄)
判断循环尾 ()
' 释放查询结果集句柄
sqlite3_finalize (查询结果集句柄)
' 提示用户查询成功
信息框 ("查询成功!共找到:" + 到文本 (超级列表框_联系人.取表项数 ()) + "条记录", 0, "提示")
六、真实案例:个人通讯录管理系统
6.1 系统功能需求
个人通讯录管理系统的功能需求包括:
- 数据库初始化:根据用户选择的数据库类型(Access/SQLite3)初始化数据库;
- 联系人管理:添加、删除、修改、查询联系人信息;
- 数据导入导出:导入CSV文件,导出CSV文件;
- 数据备份恢复:备份数据库文件,恢复数据库文件;
- 界面优化:组件布局使用锚定与停靠,支持窗口最大化和最小化。
6.2 系统核心代码实现(数据库初始化)
epl
.版本 2
.支持库 spec
.支持库 eDB
' 程序集数据段定义的数据库类型变量
.程序集变量 数据库类型, 整数型, , 0:Access,1:SQLite3
.子程序 初始化数据库, , 公开
.参数 用户选择的数据库类型, 整数型, , 0:Access,1:SQLite3
.局部变量 通用对话框, 通用对话框
.局部变量 数据库文件路径, 文本型
' 保存用户选择的数据库类型
数据库类型 = 用户选择的数据库类型
' 根据数据库类型初始化
.如果 (数据库类型 = 0) ' Access
' 打开通用对话框,让用户选择或创建Access数据库文件
通用对话框.类型 = #打开文件
通用对话框.初始目录 = 取运行目录 ()
通用对话框.过滤器 = "Access数据库文件|*.mdb;*.accdb"
通用对话框.默认文件后缀 = "mdb"
.如果真 (通用对话框.打开 () = 假)
返回 ()
.如果真结束
' 打开数据库
打开数据库 (通用对话框.文件名, )
.否则
.如果 (数据库类型 = 1) ' SQLite3
' 打开通用对话框,让用户选择或创建SQLite3数据库文件
通用对话框.类型 = #打开文件
通用对话框.初始目录 = 取运行目录 ()
通用对话框.过滤器 = "SQLite3数据库文件|*.db;*.sqlite3"
通用对话框.默认文件后缀 = "db"
.如果真 (通用对话框.打开 () = 假)
返回 ()
.如果真结束
' 打开数据库
打开SQLite3数据库 (通用对话框.文件名)
' 创建数据表(如果不存在)
创建SQLite3数据表 ("联系人表")
.如果结束
.如果结束
6.3 系统核心代码实现(联系人查询)
epl
.版本 2
.支持库 spec
.支持库 eDB
.支持库 eGrid
.子程序 _查询按钮_被单击
.局部变量 查询条件, 文本型
' 获取查询条件
查询条件 = 查询输入框.内容
' 根据数据库类型执行查询
.如果 (数据库类型 = 0) ' Access
' 构建查询条件(支持姓名、电话的模糊搜索)
.局部变量 完整查询条件, 文本型
如果真 (查询条件 ≠ "")
完整查询条件 = "姓名 LIKE '" + 查询条件 + "%' OR 电话 LIKE '" + 查询条件 + "%'"
.如果真结束
查询数据_SQL (完整查询条件)
.否则
.如果 (数据库类型 = 1) ' SQLite3
' 构建查询条件(支持姓名、电话的模糊搜索)
.局部变量 完整查询条件, 文本型
.局部变量 查询SQL语句, 文本型
如果真 (查询条件 ≠ "")
完整查询条件 = "姓名 LIKE '" + 查询条件 + "%' OR 电话 LIKE '" + 查询条件 + "%'"
查询SQL语句 = "SELECT * FROM 联系人表 WHERE " + 完整查询条件 + " ORDER BY 姓名 ASC"
.如果真结束
查询SQLite3数据 (查询SQL语句)
.如果结束
.如果结束
七、总结
💡本章总结 :本章主要介绍了易语言数据库操作初步,包括内置Ado引擎的概述、基本操作(可视化命令方式和SQL方式)、SQL语句基础、轻量级SQLite3数据库的集成与使用,以及真实案例个人通讯录管理系统的开发。
⚠️注意事项:
- 在使用内置数据库时,要注意连接字符串的配置(Access版本匹配);
- 在使用SQL语句时,要注意字段类型的匹配和SQL注入的风险(使用参数化查询可以避免);
- 在使用SQLite3时,要确保sqlite3.dll文件的版本和路径正确;
- 在进行数据库操作时,要及时添加错误处理,提高程序的稳定性。
✅学习成果:通过本章的学习,读者已经掌握了易语言数据库操作的核心技术,可以开发出具有数据存储功能的软件,为后续学习面向对象编程和多线程数据库操作奠定了基础。