对于许多易语言开发者而言,当程序需要处理大量、需要长期保存的数据时,使用文本文件(如INI、TXT)会显得力不从心,它们在数据查询、关联、并发处理等方面存在天然缺陷,引入数据库技术是最佳选择,数据库能够高效、安全地组织和管理数据,并提供强大的查询语言(SQL)进行数据操作,在易语言中建立和操作数据库,核心在于选择合适的数据库类型并掌握其对应的操作方法。

选择合适的数据库:初学者的首选
在易语言生态中,有多种数据库可供选择,但对于初学者,我们强烈推荐从SQLite开始。
-
SQLite:它是一个轻量级的、嵌入式的关系型数据库,最大的优点是“无服务器”,数据库就是一个单独的文件(.db或.sqlite3),无需安装独立的数据库服务,直接通过易语言代码即可读写,这极大地降低了学习和部署的门槛,易语言官方提供了“数据库操作支持库”(eDB.db),对SQLite有非常好的原生支持。
-
Microsoft Access (MDB):也是一种文件型数据库,在Windows环境下较为常见,但易语言对其支持相对老旧,且需要系统安装相应的ODBC或OLE DB驱动,不如SQLite方便。
-
MySQL / SQL Server:这些都是功能强大的客户端/服务器(C/S)架构数据库,它们适合大型、多用户、高并发的应用,但其部署复杂,需要单独安装数据库服务,易语言连接也需要额外的支持库或组件,不适合入门学习。
SQLite凭借其简单、高效、零配置的特性,是易语言初学者学习和使用数据库的首选,本文后续内容将以SQLite为例进行讲解。
建立数据库的完整流程
使用易语言操作SQLite数据库,主要依赖于“数据库操作支持库”,整个流程可以概括为:引用支持库 -> 连接(创建)数据库 -> 创建数据表 -> 操作数据(增删改查) -> 关闭数据库。
准备工作:引用支持库
在编写代码前,必须先在程序中引入数据库操作支持库,操作方法:在易语言IDE的左侧“支持库”面板中,找到“数据库操作支持库 (eDB.db)”,双击将其添加到当前程序中,如果找不到,可能需要通过易语言自带的“支持库配置”工具进行安装。
连接(创建)数据库
连接数据库是第一步,如果指定的数据库文件不存在,SQLite的连接函数会自动创建它。

核心函数:数据库.打开() 或 数据库.创建()
数据库.打开 (文件名, [密码]):尝试打开一个已存在的数据库文件。数据库.创建 (文件名, [密码]):创建一个新的数据库文件,如果文件已存在则会覆盖。
我们使用数据库.打开(),因为它在文件不存在时会扮演创建者的角色,更为通用。
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 数据库, 数据库
' 尝试打开或创建数据库文件,如果文件不存在会自动创建
.(数据库.打开 (“C:\MyData\test.db”, “”) = 假)
信息框 (“数据库打开失败,请检查路径或权限!”, 0, )
结束 ()
.否则
信息框 (“数据库连接成功!”, 0, )
代码解析:
- 定义一个“数据库”类型的局部变量。
- 调用
数据库.打开()方法,第一个参数是数据库文件的完整路径(请确保目录C:\MyData存在),第二个参数是密码(空字符串表示无密码)。 - 函数返回逻辑值,真(
真)表示成功,假(假)表示失败,必须进行错误判断。
创建数据表
数据库本身只是一个空壳,数据存储在“表”中,创建表需要使用SQL语句,常用的SQL语句是CREATE TABLE。
核心函数:数据库.执行SQL ()
.子程序 创建用户表
.局部变量 数据库, 数据库
.局部变量 sql, 文本型
sql = “CREATE TABLE IF NOT EXISTS users (”
sql = sql + “id INTEGER PRIMARY KEY AUTOINCREMENT, ” ' id,主键,自动递增
sql = sql + “name TEXT NOT NULL, ” ' 姓名,文本型,不能为空
sql = sql + “age INTEGER, ” ' 年龄,整数型
sql = sql + “reg_date DATETIME)” ' 注册日期,日期时间型
.(数据库.打开 (“C:\MyData\test.db”, “”) = 真)
.(数据库.执行SQL (sql) = 真)
信息框 (“用户表创建成功!”, 0, )
.否则
信息框 (“表创建失败,错误信息:” + 数据库.取错误信息 (), 0, )
.如果结束
数据库.关闭 () ' 操作完毕后关闭数据库
.否则
信息框 (“数据库连接失败!”, 0, )
.如果结束
代码解析:
CREATE TABLE IF NOT EXISTS users:创建一个名为users的表,如果它已存在则不执行任何操作,避免重复创建报错。id INTEGER PRIMARY KEY AUTOINCREMENT:定义一个名为id的列,类型为整数(INTEGER),设为主键(PRIMARY KEY),并自动增长(AUTOINCREMENT)。name TEXT NOT NULL:定义一个名为name的列,类型为文本(TEXT),且不能为空(NOT NULL)。数据库.执行SQL (sql):执行我们拼接好的SQL语句。数据库.取错误信息 ():当SQL执行失败时,这个函数可以返回具体的错误描述,对调试非常有帮助。
操作数据:插入与查询
创建好表后,就可以进行数据的插入和查询了。
- 插入数据 (INSERT INTO)
sql = “INSERT INTO users (name, age, reg_date) VALUES ('张三', 25, datetime('now'))”
数据库.执行SQL (sql)
这行代码会向users表中插入一条新记录。

- 查询数据 (SELECT)
查询稍微复杂一些,因为它会返回一个结果集,我们需要遍历这个结果集来读取数据。
.子程序 查询所有用户
.局部变量 数据库, 数据库
.局部变量 记录集, 记录集
.局部变量 sql, 文本型
sql = “SELECT id, name, age FROM users”
.(数据库.打开 (“C:\MyData\test.db”, “”) = 真)
记录集 = 数据库.查询 (sql)
.(记录集.到首行 ()) ' 移动到第一行记录
.循环循环首 ()
输出调试文本 (“ID: ” + 到文本 (记录集.读 (1)) + “, 姓名: ” + 记录集.读 (2) + “, 年龄: ” + 到文本 (记录集.读 (3)))
.循环循环尾 (记录集.到下一行 ()) ' 移动到下一行,直到没有下一行时退出循环
.否则
输出调试文本 (“表中没有数据。”, )
.如果结束
记录集.关闭 () ' 关闭记录集
数据库.关闭 () ' 关闭数据库
.否则
信息框 (“数据库连接失败!”, 0, )
.如果结束
代码解析:
数据库.查询 (sql):执行SELECT语句,并返回一个“记录集”对象。记录集.到首行 ():将记录指针移动到第一条记录,如果成功返回真,如果查询结果为空则返回假。记录集.读 (列索引):读取当前记录指定列的值,列索引从1开始。记录集.到下一行 ():将指针移动到下一条记录,如果已是最后一条,则返回假,循环结束。- 重要:操作完记录集和数据库后,务必调用
.关闭()方法释放资源。
最佳实践与注意事项
- 路径问题:数据库文件路径建议使用相对路径(如
“.\\data.db”),这样程序移植更方便,绝对路径在分发程序时容易出错。 - 资源释放:每次打开数据库或查询后,都必须在不再使用时调用
.关闭()方法,否则可能导致文件被锁定,后续操作失败。 - SQL注入防范:当SQL语句中包含用户输入的数据时,切勿直接拼接字符串,应使用参数化查询(易语言数据库支持库支持此功能),以防止SQL注入攻击。
- 数据类型映射:了解SQLite的数据类型(如INTEGER, TEXT, REAL, BLOB)与易语言数据类型(整数、文本、小数、字节集)的对应关系,有助于正确存取数据。
相关问答FAQs
问题1:易语言只能操作SQLite数据库吗?如果想连接MySQL该怎么办?
解答:不是的,易语言具有强大的扩展性,可以连接多种数据库,除了内置对SQLite的良好支持外,连接MySQL、SQL Server等其他数据库通常有以下几种方式:
- 使用第三方支持库:在易语言社区,有许多开发者编写了专门用于连接MySQL等数据库的支持库(如“精易模块”中就包含了相关功能),引用后即可像操作SQLite一样方便。
- 使用ADO/ODBC:可以通过调用Windows系统的ADO(ActiveX Data Objects)或ODBC(Open Database Connectivity)接口来连接,这需要先在系统上配置好对应数据库的驱动,然后在易语言中创建相关COM对象进行操作,这种方式更底层,但也更通用。
问题2:为什么我的程序打开数据库时报错,提示“unable to open database file”?
解答:这个错误提示“无法打开数据库文件”,通常是以下几个原因造成的:
- 路径错误或不存在:检查你提供给
数据库.打开()的文件路径是否正确,如果目录不存在(你想在C:\MyData下创建文件,但MyData文件夹本身不存在),就会失败,请确保路径上的所有文件夹都已存在,或者先通过程序代码创建这些目录。 - 权限不足:程序没有足够的权限在指定位置写入文件,尝试在
C:\Windows等系统目录下创建文件,很可能会因权限不足而失败,建议将数据库文件放在程序的当前目录或用户的文档目录下。 - 文件被占用:数据库文件可能已经被另一个程序(比如你的另一个程序实例,或一个数据库查看工具)打开并锁定,请关闭所有可能占用该文件的程序后重试。
- 磁盘空间不足:虽然少见,但如果磁盘没有可用空间,也无法创建新文件。