关于易语言数据库支持的所有命令的详细解释,请参考数据库命令参考手册。下面介绍一些概念和编程应用知识。
1、易语言数据库文件的组成:
.edb
数据库主文件
。美东时间
数据库辅助数据文件仅当数据库有 memo 或字节集字段时才存在,文件名除后缀外与数据库主文件相同,必须与 .edb 文件放在同一目录下。
.enx
数据库索引文件。采用B+树结构,由用户根据需要创建,以加快记录搜索速度。
2.数据库内部结构:
Easy 数据库由行和列组成,如以下数据库内容:
每一行称为一条记录,每一列称为一个字段。例如,上面的数据库有四条记录和四个字段。
字段有三个属性:“名称”、“类型”、“最大文本长度”,具体描述如下:
、名称:字段名称文本长度必须在16个字符以内;(一个英文字母为一个字符长,一个中文字母为两个字符长)
,类型:可以是下列常量值之一:1.#字节类型;2.#短整型;3.#整数类型;4.#长整型;5.#小数类型;6.#双精度小数类型;7.#逻辑类型;8.#日期时间类型;10.#文本类型;11.#字节集合类型;12.#备注类型;
、最大文本长度:该属性仅在字段类型为“文本类型”时有效,用于指定文本的最大可能长度,其值范围必须在1~1024之间。若字段类型不是“文本类型”,则该属性无效。在数据库中向文本字段写入数据时,超出的部分会被自动截断。
3.系统中“数据库”菜单功能:
您可以使用数据库菜单下的结构编辑器创建指定结构的数据库或修改现有数据库的现有结构。然后,使用记录编辑器添加或修改初始记录数据。
值得告诉大家的是,这两个菜单功能都是通过调用.exe文件(由.e easy程序生成)来完成的,.e源程序已随系统提供,用户可以自行修改或扩充,以更好地满足自己的需要。
以下是数据库应用中一些常见的编程知识,首先请下载并查看示例工资数据库.edb,其结构如下:
“实际发送”字段实际上并未在该数据库中使用,仅用于方便某些命令的示例。
1.编程前的准备:
强烈建议:在开始编写数据库应用程序之前,请先将数据库的名称以及其中所有的字段名称设置为常量,因为常量可以使用系统内部的输入法快速输入。例如上面的数据库有一个字段名为“Name”,如果这个字段名称已经设置为常量,那么在程序中需要引用时,只需输入#xm即可。如果没有设置为常量,则必须使用系统的输入法逐字输入“Name”,这样是不是太麻烦了?为了让您能够快速添加所有相关的数据库常量,在“数据库”菜单下有一个“添加数据库常量”功能。使用此功能可以一次性将指定数据库的名称及其所有字段名称添加为常量。下面的描述假设您已经做好了这方面的准备。
2.数据库本身的常见操作:
1.创建数据库:
要在程序中创建数据库,请使用“创建”命令。要创建上述示例工资数据库 .edb,可以使用类似以下的代码:
2.打开数据库:
要打开特定数据库,请使用“打开”命令。您可以同时打开多个数据库(数量仅受操作系统限制)。
注意,Easy 的数据库放弃了XBASE工作区概念,以便可以同时打开更多的数据库。
3.设置当前数据库:
系统内部有一个“当前数据库”状态值,用于指向某个打开的数据库。大部分数据库操作命令都是针对当前数据库的,如:移动记录指针、读写字段等。用户可以使用“设置当前数据库”命令来改变系统中“当前数据库”状态值的方向。例如:
4.关闭数据库:
要关闭当前数据库,请使用“关闭”命令。要一次关闭所有打开的数据库,请使用“全部关闭”命令。(如图所示)
3.记录范围、字段范围、数据库表达:
Easy 中很多数据库命令都支持定义记录范围和字段范围,例如“复制记录”命令可以将当前数据库的记录复制到另一个数据库文件中,其调用格式后半部分如下:
复制记录(数据库文件名、记录条件、字段范围……)
“记录条件”参数用于让用户定义记录范围,用户需要使用子语句提供参数数据,例如将示例数据库中姓王的员工记录全部复制到新数据库的工资表.edb中:
输入法:fzjl("工资表",d(#xm)?="王")
其中:read(#name) ≈ “王” 是用来定义记录范围的子语句。这个和XBASE的格式基本一致,只不过在XBASE中可以直接使用字段名,而由于Easy 不是解释型语言,所以用read(xxx)来代替(其中xxx是字段名)。
如果只想从示例数据库中复制“姓名”和“薪水”字段,则需要使用字段范围参数:
字段范围参数通常是数据库命令的最后一个参数,以允许用户通过添加参数同时提供多个字段,但您也可以使用数组来完成相同的工作:
如果要给数据库中所有员工的工资增加100元,需要用到数据库表达式。完成这个任务的相关数据库命令“”的后半部分调用格式如下:
替换(替换范围、字段名称或替换数据,...)
其每一个“字段名称或替换数据”参数对应一个“字段名称”和一个“替换数据”参数。
声明如下:
其中,#为字段名,(#) + 100为数据库表达式,用于提供对“工资”字段获取替换数据的方法。
您可以同时替换多个字段,例如:
该语句还可以将“扣除额”字段清除为零。
数据库表达式中也可以同时使用多个字段,例如:
该报表可以计算出每个员工的实际工资。
还有许多数据库命令使用数据库表达式,例如:
计算最高实得工资并跳转到其员工记录:
按实际工资排序存入工资表.edb:
4.当前记录指针:
每个打开的数据库都有一个“当前记录指针”状态值,该状态值指向数据库中的某条记录,用于为一些记录读写命令提供位置指示,如“读”、“写”、“删除”等。除了指向普通记录外,它还可能具有下列状态值之一:
1. 在第一条记录之前。意思是当前记录指针已经移动到了数据库第一条记录的最前面,此时如果执行读写当前记录的命令,肯定会失败,因为找不到对应的记录读写位置。可以用“第一条记录之前”命令来测试这个状态值;
2. 最后一条记录之后。这意味着当前记录指针已经移动到了数据库最后一条记录的后面。此时如果执行读取或写入当前记录的命令,将会失败。可以使用“最后一条记录之后”命令来测试此状态值;
使用“获取记录号”命令可以获取当前记录指针指向的记录号(从 1 开始),如果为 0,表示位于第一条记录之前;如果大于最大记录号,表示位于最后一条记录之后。
“转到第一条记录”命令可以将当前记录指针移动到数据库的第一条记录,“转到最后一条记录”命令可以将当前记录指针移动到数据库的最后一条记录,“跳过”命令可以相对移动当前记录指针的值。
通过移动当前记录指针,我们可以遍历数据库中的所有记录:
反向遍历:
5.读写字段:
记录字段的读写都是在当前数据库的当前记录处进行的,主要有以下命令:
1.“阅读”。例如:
它可以返回当前记录的员工姓名;
2.“写”。例如:
可以将当前记录中的员工姓名修改为“张三”;
3、“读取字段”和“写入字段”可以读取、写入当前数据库中不存在的记录字段;
4、“修改”命令可以一次性修改当前记录的多个字段。例如:
该语句可以把当前记录中的员工姓名改为“王五”,工资改为2000,扣除额改为100。
6.添加记录:
使用“添加空记录”命令在当前数据库的末尾添加一个新的空记录。
“添加记录”命令可用于同时提供要添加的数据。例如:
该语句可以在当前数据库末尾添加一条新的员工记录,记录名称为“王五”,工资为2000,扣除额为0。
使用“添加”命令可以将其他数据库中的记录添加到本数据库中,如:Add(“”,,)将 edb数据库中的所有记录添加到当前数据库的末尾;
该语句只能添加前10条记录;
该语句只能添加所有还未被删除的记录。
7.删除记录:
和XBASE数据库一样,使用“删除”命令删除记录,但记录并不会立刻从数据库中移除,只是被打上删除标记,并且依然存在,可以正常访问。只有执行“完全删除”命令,这些被打上删除标记的记录才会真正从数据库中移除。
使用“已删除”命令检查当前记录是否被标记为删除。对于标记为删除的记录,使用“取消删除”命令可清除删除标记。
使用“清除”命令可以彻底删除当前数据库中的所有记录。
8. 查询记录:
查找记录有两种方法:不使用索引和使用索引。
1.不使用索引:
示例数据库中查找姓王的所有员工记录的方法类似如下:
转到第一条记录()如果当前记录指针位于第一条记录上,则不需要此语句。
判断循环头(搜索(读作 (#name) ≈ “王”))
执行所需的操作。
跳过去()
判断循环结束()
请注意,与 XBASE 不同,Easy 中的搜索从当前记录开始。
结合易语言中的拼音处理命令,可以解决汉字中非常常见的查找同音问题:
语句中的“删除所有空格”命令用于预先去除字段数据中可能存在的任何全角和半角空格,如果确定所有记录的字段数据中都没有空格,则可以去除此命令。
第一条语句可以找出当前数据库中所有名字发音为“王屋”的员工,比如“王五”、“王舞”等;第二条语句完成类似的任务,但是使用了完整拼音编码;第三条语句使用了第一种拼音编码。
2.使用索引:
您可以预先使用结构管理器在工资.edb文件上创建索引文件,也可以在程序中创建:
上述语句创建了一个名为 .enx 的索引文件,该文件基于示例数据库的“name”字段。您还可以基于多个字段创建索引文件。
索引必须打开后才能使用。使用“新建索引”命令创建的索引将自动打开并设置为当前索引。对于现有的索引文件,必须在打开数据库时同步打开它们:
该语句同步打开.enx数据库索引文件并将其设置为当前索引。
在数据库中搜索所有名为“王武”的员工:
为了解决查找发音相似的汉字的问题,可以在易语言中建立发音索引文件:
这两个语句分别创建基于标准读音的索引文件和基于南方读音的索引文件。
使用发音索引文件进行近语音搜索,例如:
你可以找到“王五”。
在打开数据库时,应使用其“索引文件表”参数同时打开所有索引文件,以便及时更新索引文件。也可以使用“更新索引”命令强制更新当前索引文件。
9、检查数据库命令是否执行成功:
大部分数据库命令执行后都会返回一个逻辑值,表示执行是否成功,但有些命令不能做到这一点,比如“获取最大值”。
您可以在执行任何数据库命令后立即调用“获取错误代码”命令来检查该命令是否执行成功。如果成功,“获取错误代码”命令将返回 0,否则将返回非零的错误值。
另外,如果发现命令执行失败,立即调用“获取错误信息”命令就可以检索对应的错误信息文本,当然,都是中文的。