news 2026/9/26 3:31:50

易语言-基础-数据库应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
易语言-基础-数据库应用

易语言的数据库应用

创建易数据库:

使用菜单创建易数据库:

使用代码创建易数据库:

.版本 2 .支持库 eAPI ' 如果需要调用API,需添加此支持库,或者使用下面的纯易语言逻辑 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 子程序_建数据库 () .子程序 子程序_建数据库 .局部变量 字段表, 字段信息, , "6" .局部变量 完整路径, 文本型 .局部变量 文件状态, 逻辑型 ' 1. 构建完整路径 完整路径 = 取运行目录 () + “\” + #员工表 ' 【调试用】取消下面这行的注释,查看实际路径是否正确 信息框 (“当前检测路径:” + 完整路径, #信息图标, “调试”) ' 2. 判断文件是否存在 ' 方法A:使用内置命令(注意:确保程序有权限读取该目录) 文件状态 = 文件是否存在 (完整路径) ' 方法B(备选):如果方法A不准,可使用 API 判断(需声明 API,此处略,通常方法A足够) ' 如果使用内置命令失败,请检查是否以管理员身份运行 .如果真 (文件状态 = 真) 信息框 (“数据库已存在,无需创建。” + #换行符 + “路径:” + 完整路径, #信息图标, “提示”) ' 建议不要直接结束(),而是返回或继续执行后续加载逻辑 ' 结束 () 返回 () .如果真结束 ' 3. 文件不存在,询问是否创建 .如果真 (信息框 (“员工表不存在,是否创建数据库?” + #换行符 + “路径:” + 完整路径, #询问图标 + #是否钮, “初始化”) = #否钮) 信息框 (“系统将会退出!”, #错误图标, “退出”) 结束 () .如果真结束 ' 4. 定义字段 字段表 [1].名称 = #姓名 字段表 [1].类型 = #文本型 字段表 [1].最大文本长度 = 20 ' 建议增加长度 字段表 [2].名称 = #性别 字段表 [2].类型 = #文本型 ' 建议改为文本型,存"男"/"女" 字段表 [2].最大文本长度 = 2 字段表 [3].名称 = #年龄 字段表 [3].类型 = #整数型 字段表 [4].名称 = #出生日期 字段表 [4].类型 = #日期时间型 字段表 [5].名称 = #工资 字段表 [5].类型 = #小数型 字段表 [6].名称 = #奖金 字段表 [6].类型 = #小数型 ' 5. 创建数据库 .如果真 (创建 (完整路径, 字段表) = 假) 信息框 (“创建数据库失败!” + #换行符 + “可能原因:权限不足、磁盘空间满、路径无效” + #换行符 + “路径:” + 完整路径, #错误图标, “错误”) 结束 () .如果真结束 信息框 (“数据库创建成功!” + #换行符 + “路径:” + 完整路径, #信息图标, “成功”)

使用其他路径:

.版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 目标目录, 文本型 .子程序 __启动窗口_创建完毕 子程序_建数据库 () .子程序 保存数据库到E盘 目标目录 = “E:\mydate” ' 确保目录存在 .如果真 (文件是否存在 (目标目录) = 假) 创建目录 (目标目录) .如果真结束 .子程序 子程序_建数据库 .局部变量 字段表, 字段信息, , "6" .局部变量 完整路径, 文本型 .局部变量 文件状态, 逻辑型 保存数据库到E盘 () ' 1. 构建完整路径 完整路径 = 目标目录 + “\” + #员工表 ' 【调试用】取消下面这行的注释,查看实际路径是否正确 信息框 (“当前检测路径:” + 完整路径, #信息图标, “调试”, ) ' 2. 判断文件是否存在 ' 方法A:使用内置命令(注意:确保程序有权限读取该目录) 文件状态 = 文件是否存在 (完整路径) ' 方法B(备选):如果方法A不准,可使用 API 判断(需声明 API,此处略,通常方法A足够) ' 如果使用内置命令失败,请检查是否以管理员身份运行 .如果真 (文件状态 = 真) 信息框 (“数据库已存在,无需创建。” + #换行符 + “路径:” + 完整路径, #信息图标, “提示”, ) ' 建议不要直接结束(),而是返回或继续执行后续加载逻辑 ' 结束 () 返回 () .如果真结束 ' 3. 文件不存在,询问是否创建 .如果真 (信息框 (“员工表不存在,是否创建数据库?” + #换行符 + “路径:” + 完整路径, #询问图标 + #是否钮, “初始化”, ) = #否钮) 信息框 (“系统将会退出!”, #错误图标, “退出”, ) 结束 () .如果真结束 ' 4. 定义字段 字段表 [1].名称 = #姓名 字段表 [1].类型 = #文本型 字段表 [1].最大文本长度 = 20 ' 建议增加长度 字段表 [2].名称 = #性别 字段表 [2].类型 = #文本型 ' 建议改为文本型,存"男"/"女" 字段表 [2].最大文本长度 = 2 字段表 [3].名称 = #年龄 字段表 [3].类型 = #整数型 字段表 [4].名称 = #出生日期 字段表 [4].类型 = #日期时间型 字段表 [5].名称 = #工资 字段表 [5].类型 = #小数型 字段表 [6].名称 = #奖金 字段表 [6].类型 = #小数型 ' 5. 创建数据库 .如果真 (创建 (完整路径, 字段表) = 假) 信息框 (“创建数据库失败!” + #换行符 + “可能原因:权限不足、磁盘空间满、路径无效” + #换行符 + “路径:” + 完整路径, #错误图标, “错误”, ) 结束 () .如果真结束 信息框 (“数据库创建成功!” + #换行符 + “路径:” + 完整路径, #信息图标, “成功”, )

给易数据库添加记录:

为易数据库设置密码:

使用代码设置易数据库密码:

易数据库相关组件:

数据库组件关联方法:

程序界面设计与组件关联

易数据库的操作命令

.版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 目标目录, 文本型 .程序集变量 数据库句柄, 整数型, , , ' 建议增加一个变量保存打开后的句柄,以便后续操作 .子程序 __启动窗口_创建完毕 ' 初始化路径,避免后续调用时为空 目标目录 = “E:\mydate” .子程序 _按钮_创建易数据库_被单击 子程序_建数据库 () .子程序 子程序_建数据库 .局部变量 字段表, 字段信息, , "6" .局部变量 完整路径, 文本型 .局部变量 文件状态, 逻辑型 ' 1. 确保目录存在 .如果真 (文件是否存在 (目标目录) = 假) 创建目录 (目标目录) .如果真结束 ' 2. 构建完整路径 完整路径 = 目标目录 + “\” + #员工表 ' 3. 判断文件是否存在 文件状态 = 文件是否存在 (完整路径) .如果真 (文件状态 = 真) 信息框 (“数据库已存在,无需创建。” + #换行符 + “路径:” + 完整路径, #信息图标, “提示”, ) 返回 () .如果真结束 ' 4. 定义字段 字段表 [1].名称 = #姓名 字段表 [1].类型 = #文本型 字段表 [1].最大文本长度 = 20 字段表 [2].名称 = #性别 字段表 [2].类型 = #文本型 字段表 [2].最大文本长度 = 2 字段表 [3].名称 = #年龄 字段表 [3].类型 = #整数型 字段表 [4].名称 = #出生日期 字段表 [4].类型 = #日期时间型 字段表 [5].名称 = #工资 字段表 [5].类型 = #小数型 字段表 [6].名称 = #奖金 字段表 [6].类型 = #小数型 ' 5. 创建数据库 .如果真 (创建 (完整路径, 字段表) = 假) 信息框 (“创建数据库失败!” + #换行符 + “可能原因:权限不足、磁盘空间满、路径无效” + #换行符 + “路径:” + 完整路径, #错误图标, “错误”, ) 返回 () ' 使用返回而不是结束,让程序保持运行 .如果真结束 信息框 (“数据库创建成功!” + #换行符 + “路径:” + 完整路径, #信息图标, “成功”, )

数据库的打开与关闭:

.版本 2 .子程序 _按钮_打开易数据库_被单击 .局部变量 结果, 逻辑型 ' 确保路径已知,如果之前没创建过,可能需要重新获取路径 .如果真 (目标目录 = “”) 目标目录 = “E:\mydate” .如果真结束 ' 尝试打开数据库 ' 注意:易语言的“打开”命令返回值和参数需根据具体使用的数据库模块确认 ' 这里假设第一个参数是文件名,第二个是别名 结果 = 打开 (目标目录 + “\” + #员工表, “员工表”, , , , , ) .如果 (结果 = 假) 信息框 (“员工数据库打开失败!” + #换行符 + “请确认数据库是否已创建且未被占用。”, #错误图标, “错误”, ) .否则 信息框 (“员工数据库打开成功!” + #换行符 + “可以进行后续数据操作。”, #信息图标, “成功”, ) .如果结束

置当前数据库:

关闭数据库:

数据库的指针跳转命令:

记录读取命令:

数据源的常用命令:

记录的添加与修改命令:

记录的删除命令:

复制记录与复制结构命令:

数值统计类命令:

记录的查找:

索引的创建与使用

示例:

.版本 2 .支持库 iext .程序集 窗口程序集_启动窗口 .程序集变量 目标目录, 文本型 .程序集变量 数据库已打开, 逻辑型 .子程序 __启动窗口_创建完毕 目标目录 = “E:\mydate” 数据库已打开 = 假 超级列表框1.全部删除 () .子程序 _按钮_创建易数据库_被单击 子程序_建数据库 () .子程序 子程序_建数据库 .局部变量 字段表, 字段信息, , "6" .局部变量 完整路径, 文本型 ' -------------------------------------------------- ' 创建目录 ' -------------------------------------------------- .如果真 (文件是否存在 (目标目录) = 假) 创建目录 (目标目录) .如果真结束 完整路径 = 目标目录 + “\” + #员工表 ' -------------------------------------------------- ' 判断数据库是否存在 ' -------------------------------------------------- .如果真 (文件是否存在 (完整路径)) 信息框 (“数据库已经存在!” + #换行符 + “路径:” + 完整路径, #信息图标, “提示”, ) 返回 () .如果真结束 ' -------------------------------------------------- ' 定义字段 ' -------------------------------------------------- 字段表 [1].名称 = #姓名 字段表 [1].类型 = #文本型 字段表 [1].最大文本长度 = 20 字段表 [2].名称 = #性别 字段表 [2].类型 = #文本型 字段表 [2].最大文本长度 = 2 字段表 [3].名称 = #年龄 字段表 [3].类型 = #整数型 字段表 [4].名称 = #出生日期 字段表 [4].类型 = #日期时间型 字段表 [5].名称 = #工资 字段表 [5].类型 = #小数型 字段表 [6].名称 = #奖金 字段表 [6].类型 = #小数型 ' -------------------------------------------------- ' 创建数据库 ' -------------------------------------------------- .如果真 (创建 (完整路径, 字段表) = 假) 信息框 (“数据库创建失败!” + #换行符 + “路径:” + 完整路径, #错误图标, “错误”, ) 返回 () .如果真结束 信息框 (“数据库创建成功!” + #换行符 + “路径:” + 完整路径, #信息图标, “成功”, ) ' ================================================== ' 打开数据库 ' ================================================== .子程序 _按钮_打开易数据库_被单击 .局部变量 完整路径, 文本型 .局部变量 结果, 逻辑型 完整路径 = 目标目录 + “\” + #员工表 .如果真 (文件是否存在 (完整路径) = 假) 信息框 (“数据库不存在!” + #换行符 + “请先创建数据库。”, #错误图标, “错误”, ) 返回 () .如果真结束 ' ================================================== ' 打开传统易数据库 ' ================================================== .如果真 (数据库已打开) 关闭 () .如果真结束 结果 = 打开 (完整路径, “员工表”, , , , , ) .如果 (结果) 数据库已打开 = 真 ' ================================================ ' 设置数据库提供者 ' ================================================ 数据库提供者1.数据库文件名 = 完整路径 ' ================================================ ' 设置数据源 ' ================================================ 数据源1.数据提供者 = “数据库提供者1” 信息框 (“员工数据库打开成功!”, #信息图标, “成功”, ) .否则 数据库已打开 = 假 信息框 (“员工数据库打开失败!”, #错误图标, “错误”, ) .如果结束 .子程序 _按钮_显示全部数据_被单击 刷新员工数据 () .子程序 刷新员工数据 .局部变量 记录数, 整数型 .局部变量 i, 整数型 .局部变量 新增表项索引, 整数型 .局部变量 日期文本, 文本型 .局部变量 工资文本, 文本型 .局部变量 奖金文本, 文本型 ' 1. 先检查数据库状态 .如果真 (数据库已打开 = 假) 信息框 (“请先打开员工数据库!”, #错误图标, “提示”, ) 返回 () .如果真结束 ' 2. 清空列表里所有旧数据 超级列表框1.全部删除 () ' 3. 获取数据库总记录数 记录数 = 取记录数 () .如果真 (记录数 = 0) 返回 () .如果真结束 ' 4. 重置记录指针到第一条 到首记录 () ' 5. 循环遍历所有记录 .计次循环首 (记录数, i) ' 插入新行,序号列 新增表项索引 = 超级列表框1.插入表项 (, 到文本 (i), , , , ) ' 第2列:姓名 超级列表框1.置标题 (新增表项索引, 1, 读 (#姓名)) ' 第3列:性别 超级列表框1.置标题 (新增表项索引, 2, 读 (#性别)) ' 第4列:年龄 超级列表框1.置标题 (新增表项索引, 3, 到文本 (读 (#年龄))) ' 第5列:出生日期(使用截取法,避免年月日命令报错) 日期文本 = 到文本 (读 (#出生日期)) ' 如果日期文本长度大于10,只取前10位(yyyy-mm-dd) .如果真 (取文本长度 (日期文本) > 13) 日期文本 = 取文本左边 (日期文本, 13) .如果真结束 超级列表框1.置标题 (新增表项索引, 4, 日期文本) ' 第6列:工资 工资文本 = 到文本 (四舍五入 (读 (#工资), 2)) 超级列表框1.置标题 (新增表项索引, 5, 工资文本 + “ 元”) ' 第7列:奖金 奖金文本 = 到文本 (四舍五入 (读 (#奖金), 2)) 超级列表框1.置标题 (新增表项索引, 6, 奖金文本 + “ 元”) ' 移动到下一条记录 跳过 () .计次循环尾 () .子程序 _按钮_添加员工_被单击 .局部变量 窗口_添加, 窗口 .如果真 (数据库已打开 = 假) 信息框 (“请先打开员工数据库!”, #错误图标, “提示”, ) 返回 () .如果真结束 载入 (窗口_添加, , 真) ' 添加窗口关闭以后刷新 刷新员工数据 () 超级列表框1.刷新显示 () ' ================================================== ' 查询员工 ' ================================================== .子程序 _按钮_查询员工_被单击 .局部变量 查询姓名, 文本型 .局部变量 结果, 逻辑型 .局部变量 显示文本, 文本型 .局部变量 出生日期, 日期时间型 .局部变量 日期文本, 文本型 .如果真 (数据库已打开 = 假) 信息框 (“请先打开员工数据库!”, #错误图标, “提示”, ) 返回 () .如果真结束 查询姓名 = 删首尾空 (编辑框_查询.内容) .如果真 (查询姓名 = “”) 信息框 (“请输入要查询的员工姓名!”, #信息图标, “提示”, ) 返回 () .如果真结束 到首记录 () ' 查找姓名完全相同的记录 结果 = 查找 (删首尾空 (读 (#姓名)) = 查询姓名) .如果 (结果) 显示文本 = “查询成功!” + #换行符 + #换行符 显示文本 = 显示文本 + “姓名:” + 到文本 (读 (#姓名)) + #换行符 显示文本 = 显示文本 + “性别:” + 到文本 (读 (#性别)) + #换行符 显示文本 = 显示文本 + “年龄:” + 到文本 (读 (#年龄)) + #换行符 ' 出生日期 = 读 (#出生日期) 日期文本 = 到文本 (读 (#出生日期)) ' 如果日期文本长度大于10,只取前10位(yyyy-mm-dd) .如果真 (取文本长度 (日期文本) > 13) 日期文本 = 取文本左边 (日期文本, 13) .如果真结束 显示文本 = 显示文本 + “出生日期:” + 日期文本 + #换行符 显示文本 = 显示文本 + “工资:” + 到文本 (读 (#工资)) + #换行符 显示文本 = 显示文本 + “奖金:” + 到文本 (读 (#奖金)) + #换行符 显示文本 = 显示文本 + #换行符 显示文本 = 显示文本 + “当前记录号:” + 到文本 (取记录号 ()) 信息框 (显示文本, #信息图标, “查询结果”, ) .否则 信息框 (“没有找到姓名为【” + 查询姓名 + “】的员工。”, #信息图标, “查询结果”, ) .如果结束 刷新员工数据 () 超级列表框1.刷新显示 () ' ================================================== ' 修改员工 ' ================================================== .子程序 _按钮_修改员工_被单击 .局部变量 查询姓名, 文本型 .局部变量 结果, 逻辑型 .局部变量 窗口_修改, 窗口 .如果真 (数据库已打开 = 假) 信息框 (“请先打开员工数据库!”, #错误图标, “提示”, ) 返回 () .如果真结束 查询姓名 = 删首尾空 (编辑框_查询.内容) .如果真 (查询姓名 = “”) 信息框 (“请输入要修改的员工姓名!”, #信息图标, “提示”, ) 返回 () .如果真结束 ' -------------------------------------------------- ' 先查找员工 ' -------------------------------------------------- 到首记录 () 结果 = 查找 (删首尾空 (读 (#姓名)) = 查询姓名) .如果真 (结果 = 假) 信息框 (“没有找到员工【” + 查询姓名 + “】!”, #错误图标, “提示”, ) 返回 () .如果真结束 ' -------------------------------------------------- ' 打开修改窗口 ' 此时数据库当前记录已经定位到目标员工 ' -------------------------------------------------- 载入 (窗口_修改, , 真) ' 修改窗口关闭以后刷新 刷新员工数据 () 超级列表框1.刷新显示 () ' ================================================== ' 删除员工 ' ================================================== .子程序 _按钮_删除员工_被单击 .局部变量 查询姓名, 文本型 .局部变量 结果, 逻辑型 .如果真 (数据库已打开 = 假) 信息框 (“请先打开员工数据库!”, #错误图标, “提示”, ) 返回 () .如果真结束 查询姓名 = 删首尾空 (编辑框_查询.内容) .如果真 (查询姓名 = “”) 信息框 (“请输入要删除的员工姓名!”, #信息图标, “提示”, ) 返回 () .如果真结束 ' -------------------------------------------------- ' 查找员工 ' -------------------------------------------------- 到首记录 () 结果 = 查找 (删首尾空 (读 (#姓名)) = 查询姓名) .如果真 (结果 = 假) 信息框 (“没有找到员工【” + 查询姓名 + “】!”, #错误图标, “提示”, ) 返回 () .如果真结束 ' -------------------------------------------------- ' 删除当前记录 ' -------------------------------------------------- .如果真 (删除 () = 假) 信息框 (“员工删除失败!”, #错误图标, “错误”, ) 返回 () .如果真结束 .如果 (信息框 (“确定删除员工【” + 查询姓名 + “】吗?不可恢复!”, #是否钮 + #警告图标, “确认”, ) ≠ #是钮) 返回 () .否则 .如果结束 ' -------------------------------------------------- ' 彻底清除已经标记删除的记录 ' -------------------------------------------------- 彻底删除 () 信息框 (“员工【” + 查询姓名 + “】删除成功!”, #信息图标, “成功”, ) 刷新员工数据 () 超级列表框1.刷新显示 ()

.版本 2 .程序集 窗口程序集_窗口_添加 .子程序 _窗口_添加_创建完毕 ' ================================================== ' 初始化性别组合框 ' ================================================== 组合框1.加入项目 (“男”, ) 组合框1.加入项目 (“女”, ) 组合框1.现行选中项 = 0 .子程序 _按钮1_被单击 ' ================================================== ' 1. 检查姓名 ' ================================================== .如果真 (编辑框_姓名.内容 = “”) 信息框 (“请输入姓名!”, #信息图标, “提示”, ) 返回 () .如果真结束 ' ================================================== ' 2. 检查年龄 ' ================================================== .如果真 (编辑框_年龄.内容 = “”) 信息框 (“请输入年龄!”, #信息图标, “提示”, ) 返回 () .如果真结束 ' ================================================== ' 3. 检查工资 ' ================================================== .如果真 (编辑框_工资.内容 = “”) 信息框 (“请输入工资!”, #信息图标, “提示”, ) 返回 () .如果真结束 ' ================================================== ' 4. 检查奖金 ' ================================================== .如果真 (编辑框_奖金.内容 = “”) 信息框 (“请输入奖金!”, #信息图标, “提示”, ) 返回 () .如果真结束 ' ================================================== ' 5. 增加一条空记录 ' ================================================== 加空记录 () ' ================================================== ' 6. 写入数据 ' ================================================== .如果 (写字段 (#姓名, , 编辑框_姓名.内容) 且 写字段 (#性别, , 组合框1.内容) 且 写字段 (#年龄, , 到整数 (编辑框_年龄.内容)) 且 写字段 (#出生日期, , 日期框1.今天) 且 写字段 (#工资, , 到数值 (编辑框_工资.内容)) 且 写字段 (#奖金, , 到数值 (编辑框_奖金.内容))) 信息框 (“添加记录成功!”, #信息图标, “成功”, ) 销毁 () .否则 信息框 (“添加记录失败!”, #错误图标, “失败”, ) .如果结束

.版本 2 .程序集 窗口程序集_窗口_修改 .子程序 _窗口_修改_创建完毕 ' ================================================== ' 初始化性别组合框 ' ================================================== 组合框1.加入项目 (“男”, ) 组合框1.加入项目 (“女”, ) ' ================================================== ' 读取当前员工资料 ' 主窗口在打开本窗口之前, ' 已经通过 查找() 定位到了目标记录 ' ================================================== 编辑框_姓名.内容 = 读 (#姓名) 编辑框_年龄.内容 = 到文本 (读 (#年龄)) 编辑框_工资.内容 = 到文本 (读 (#工资)) 编辑框_奖金.内容 = 到文本 (读 (#奖金)) .如果 (读 (#性别) = “男”) 组合框1.现行选中项 = 0 .否则 组合框1.现行选中项 = 1 .如果结束 日期框1.今天 = 读 (#出生日期) ' ================================================== ' 保存修改 ' ================================================== .子程序 _按钮_修改_被单击 ' -------------------------------------------------- ' 检查姓名 ' -------------------------------------------------- .如果真 (编辑框_姓名.内容 = “”) 信息框 (“姓名不能为空!”, #信息图标, “提示”, ) 返回 () .如果真结束 ' -------------------------------------------------- ' 检查年龄 ' -------------------------------------------------- .如果真 (编辑框_年龄.内容 = “”) 信息框 (“年龄不能为空!”, #信息图标, “提示”, ) 返回 () .如果真结束 ' -------------------------------------------------- ' 检查工资 ' -------------------------------------------------- .如果真 (编辑框_工资.内容 = “”) 信息框 (“工资不能为空!”, #信息图标, “提示”, ) 返回 () .如果真结束 ' -------------------------------------------------- ' 修改当前记录 ' -------------------------------------------------- .如果 (写 (#姓名, 编辑框_姓名.内容) 且 写 (#性别, 组合框1.内容) 且 写 (#年龄, 到整数 (编辑框_年龄.内容)) 且 写 (#出生日期, 日期框1.今天) 且 写 (#工资, 到数值 (编辑框_工资.内容)) 且 写 (#奖金, 到数值 (编辑框_奖金.内容))) 信息框 (“员工资料修改成功!”, #信息图标, “成功”, ) 销毁 () .否则 信息框 (“员工资料修改失败!”, #错误图标, “失败”, ) .如果结束

我的播放器(五)

.版本 2 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .局部变量 字段信息表, 字段信息, , "1" ' 程序启动时检查运行目录下是否存在 mp3.edb 数据库文件。如果不存在,则创建一个包含“mp3文件名”字段的数据库。 .如果真 (文件是否存在 (取运行目录 () + “\mp3.edb”) = 假) 字段信息表 [1].名称 = “mp3文件名” 字段信息表 [1].类型 = #文本型 字段信息表 [1].最大文本长度 = 500 创建 (取运行目录 () + “\mp3.edb”, 字段信息表) .如果真结束 ' 程序启动时,从数据库中读取所有记录,并将文件名添加到界面上的“播放列表框”中。 打开 (取运行目录 () + “\mp3.edb”, , , , , , ) 置当前库 (取运行目录 () + “\mp3.edb”) ' 将一个已经打开的数据库设置为当前的数据库 到首记录 () .计次循环首 (取记录数 (), ) 播放列表框.加入项目 (读 (1), ) 跳过 () .计次循环尾 () .子程序 _启动窗口_将被销毁 ' 关闭现在已经打开的制定数据库,没有提供名称的话默认关闭当前的数据库. 关闭 () .子程序 _按钮_添加_被单击 .局部变量 文本组变量, 文本型, , "0" .局部变量 计次变量, 整数型 ' 点击“添加”按钮,弹出多文件选择对话框,筛选 .MP3 文件。选中的文件会被同时添加到界面列表和后台数据库中(加记录)。 文本组变量 = 多文件对话框 (“添加mp3文件”, “mp3文件(*.MP3)|*.MP3”, , , 真, ) .如果真 (取数组成员数 (文本组变量) = 0) 返回 () .如果真结束 .计次循环首 (取数组成员数 (文本组变量), 计次变量) ' 遍历选择的文件数组,同时更新 UI (播放列表框.加入项目) 和数据层 (加记录)。 播放列表框.加入项目 (文本组变量 [计次变量], ) 加记录 (文本组变量 [计次变量]) .计次循环尾 () .子程序 _按钮_删除_被单击 ' 点击“删除”按钮,从界面列表和当前数据库记录中删除选中的歌曲。 .如果真 (播放列表框.现行选中项 ≠ -1) ' 数据库记录索引通常从 1 开始,而列表框索引从 0 开始,所以 +1 是正确的映射。 跳到 (播放列表框.现行选中项 + 1) ' 先从逻辑上标记删除,再物理移除。 删除 () 彻底删除 () '更新 UI。 播放列表框.删除项目 (播放列表框.现行选中项) .如果真结束 .子程序 _按钮_播放_被单击 ' 播放:播放列表中选中的歌曲。如果没有选中,默认播放第一首。使用 同步播放MP3命令,并关联进度标签以获取播放进度。 .如果真 (播放列表框.现行选中项 = -1) 播放列表框.现行选中项 = 0 .如果真结束 同步播放MP3 (播放列表框.取项目文本 (播放列表框.现行选中项), , 进度标签, ) ' 自动下一曲:通过 _进度标签_反馈事件 监听播放进度,当进度达到 100%(参数一)时,自动切换到下一首歌曲;如果是最后一首,则循环回到第一首。 .子程序 _进度标签_反馈事件, 整数型 .参数 参数一, 整数型 .参数 参数二, 整数型 播放进度条.位置 = 参数一 .如果真 (参数一 = 100) .如果 (播放列表框.现行选中项 = 播放列表框.取项目数 () - 1) 播放列表框.选择项目 (0, ) .否则 播放列表框.选择项目 (播放列表框.现行选中项 + 1, ) .如果结束 _按钮_播放_被单击 () .如果真结束 .子程序 _按钮_暂停_被单击 ' 暂停/继续:分别调用对应的暂停和继续播放命令。 暂停播放MP3 () .子程序 _按钮_继续_被单击 继续播放MP3 ()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 3:31:31

UltraEdit 高亮同一个单词:用 TaoToken 统一 Key 打通配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 3:31:31

Agent编排模式总结:Sequential、Parallel、Hierarchical与Orchestration

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 3:30:54

浏览器端1024维视觉向量检索:TensorFlow.js与Web Worker实战

1. 为什么我要把 1024 维向量检索整个搬到浏览器里第一次听到“端侧视觉向量特征检索”这个词,很多人脑子里冒出来的画面是:一台带独立显卡的服务器、一个向量数据库、再加一层 API 网关。这套架构我搭过不止一次,稳定是稳定,但账…

作者头像 李华
网站建设 2026/9/26 3:30:16

贪心算法经典例题:背包问题(C++ 代码逐行讲解)

1. 题目背景 这段代码解决的是经典的部分背包问题(Fractional Knapsack):给定 x 件物品,每件物品有质量 m 和价值 v,背包容量为 y,要求在不超过背包容量的前提下,使装入背包的物品总价值最大。 …

作者头像 李华
网站建设 2026/9/26 3:29:30

PyCharm 配 TaoToken:连接 Hive 数据库的配置骨架与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华