易语言数据库操作是许多开发者在编写管理软件、数据处理工具时的核心需求,本文将以易语言常用的Access数据库为例,详细介绍数据库的连接、表操作、数据增删改查等基础用法,帮助初学者快速上手。
数据库连接基础
在易语言中操作数据库,首先需要建立与数据库文件的连接,易语言提供了“支持库”中的“数据库”相关命令,核心步骤包括:定义数据库连接对象、设置连接字符串、执行打开操作,以Access数据库为例,连接字符串格式通常为:“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=数据库文件路径;”,具体代码示例如下:
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 数据库, 对象
.局部变量 连接结果, 逻辑型
' 创建数据库连接对象
数据库.创建 (“ADODB.Connection”, )
' 设置连接字符串(假设数据库文件名为“test.accdb”位于程序目录)
数据库.连接字符串 = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” + 取当前目录 () + “test.accdb;”
' 尝试打开连接
连接结果 = 数据库.打开 ()
' 判断连接是否成功
(连接结果 = 真) 则
信息框 (“数据库连接成功!”, 0, , )
否则
信息框 (“数据库连接失败:” + 数据库.错误描述, 0, , )
返回 ()
结束如果
注意:若操作的是旧版Access数据库(.mdb格式),需将连接字符串中的“ACE.OLEDB.12.0”改为“Jet.OLEDB.4.0”。
数据表操作
连接成功后,可对数据表进行查询、新增、修改、删除等操作,核心命令包括“执行SQL语句”和“记录集操作”,以下通过表格对比常用SQL语句及易语言实现方式:
操作类型 | SQL语句示例 | 易语言实现代码 |
---|---|---|
查询数据 | SELECT * FROM 用户表 WHERE 年龄 > 20 | .局部变量 记录集, 对象 记录集.创建 (“ADODB.Recordset”, ) 记录集.打开 (“SELECT * FROM 用户表 WHERE 年龄 > 20”, 数据库, 1, 1) ‘ 1:只读,1:静态游标 |
新增数据 | INSERT INTO 用户表 (姓名, 年龄) VALUES (‘张三’, 25) | 数据库.执行 (“INSERT INTO 用户表 (姓名, 年龄) VALUES (‘张三’, 25)”, ) |
修改数据 | UPDATE 用户表 SET 年龄 = 26 WHERE 姓名 = ‘张三’ | 数据库.执行 (“UPDATE 用户表 SET 年龄 = 26 WHERE 姓名 = ‘张三’”, ) |
删除数据 | DELETE FROM 用户表 WHERE 姓名 = ‘张三’ | 数据库.执行 (“DELETE FROM 用户表 WHERE 姓名 = ‘张三’”, ) |
记录集遍历与数据处理
查询操作返回的记录集需要遍历才能获取具体数据,以下为遍历记录集的示例代码:
' 假设记录集已打开(以查询用户表为例)
.局部变量 行数, 整数型
行数 = 1
' 判断记录集是否为空且移动到第一条记录
(记录集.记录数 > 0 且 记录集.移动第一条 ()) 则
循环首 ()
' 读取字段值(假设表中有“姓名”和“年龄”字段)
编辑框1.内容 = 编辑框1.内容 + “第” + 到文本 (行数) + “条:姓名=” + 到文本 (记录集.取字段值 (“姓名”)) + “,年龄=” + 到文本 (记录集.取字段值 (“年龄”)) + #换行符
行数 = 行数 + 1
' 移动到下一条记录,若失败则退出循环
循环直到 (记录集.移动下一条 () = 假)
否则
信息框 (“没有符合条件的数据!”, 0, , )
结束如果
' 关闭记录集
记录集.关闭 ()
关闭数据库连接
操作完成后,需关闭记录集和数据库连接以释放资源:
记录集.关闭 ()
数据库.关闭 ()
相关问答FAQs
问题1:提示“未安装ACE.OLEDB.12.0提供程序”怎么办?
解答:这是因为系统中缺少Access Database Engine运行库,需根据系统位数(32位/64位)下载对应版本的“Microsoft Access Database Engine 2016 Redistributable”并安装,安装后重启易语言程序即可。
问题2:如何防止SQL注入攻击?
解答:在拼接SQL语句时,避免直接使用用户输入的变量,建议使用参数化查询,
.局部变量 SQL语句, 文本型
SQL语句 = “INSERT INTO 用户表 (姓名) VALUES (?)” ' 使用问号作为参数占位符
记录集.打开 (SQL语句, 数据库, 2, 2) ' 2:动态游标,2:可更新
记录集.取字段值 (“姓名”).值 = “用户输入的姓名” ' 绑定参数值
记录集.更新 ()
参数化查询会将用户输入作为数据处理,而非SQL代码的一部分,从而有效防止注入。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复