易语言数据库操作教程
2010.06.03
一、通用提供者与数据库提供者
编程序在很多时候是要使用大量数据的,但常规情况下数据的显示、浏览是比较困难的(如果用标签、编辑框等通用组件来逐个显示数据,则往往需要很多组件,编程也十分繁琐)。为了简化易语言中的数据操作,飞扬软件工作室在易2.0版本之后提出了“数据应用框架”的概念。
“数据应用框架”最大的特点就是把数据、数据操作、数据显示分为3个不同的层次。每个层次由各自的组件完成相对独立的工作,至于各层次之间的千丝万缕的联系,则由易语言在内部实现。这3个层次由低到高分别是:数据提供者、数据源、数据处理者,如13-1所示。
图13-1  数据提供者、数据源、数据处理者关系图
其中,数据提供者用于存储、提供数据;数据源用于操作数据;数据
处理者用于显示数据。基本上数据提供者类似于商品仓库、后勤,而数据
处理者相当于前台、展示柜台,数据源相当于包装车间及运输部门。
注意:数据源仅提供操作接口,实际操作还是由数据提供者完成的,但这
一节已被易隐藏,因而可以认为数据源是数据的操作者。这里所说的“数
据”,不仅仅是指“数据库”,它的范围更广阔,而“数据库”只是“数据”的一
部分而已。
在易语言中,可充当数据提供者的组件有:通用提供者、数据库
提供者、外部数据提供者等(外部数据提供者组件将在下一章节介绍);可充当数据源的就一个数据源组件;可充当数据处理者的组件就很多了,最重要的是表格组件,此外还有编辑框、标签、列表框等拥有数据源、数据列属性的所有组件如下。
l数据处理者:表格组件、编辑框、标签、图片框、组合框、列表框。
l数据源:数据源组件。
l数据提供者:通用提供者、数据库提供者、外部数据提供者。
数据提供者、数据源、数据处理者三者之间必须事先“关联”起来,互相协调配合,才能共同完成对数据的处理。
“关联”的方法是:(1)添加相应的组件,即数据处理者、数据源、数据提供者这三个组件都必需存在;(2)将数据源的“数据提供者”属性设置为某个数据提供者组件;(3)将数据处理者组件的“数据源”属性设置为某个数据源组件。
要浏览/管理某个数据库,可以按如下方法来编程序。
(1)在设计窗体上放3个组件:数据库提供者,数据源,表格,如图13-2所示。
图13-2 放置3个组件
(2)设置数据库提供者组件的“数据库文件名”属性,即选择数
据库文件(*.edb),如图13-3所示。
图13-3 为数据提供者加入数据库
(3)设置数据源组件的“数据提供者”属性为“数据库提供者1”(从下拉列表中选择),如图13-4所示。
(4)设置表格组件的“数据源”属性为“数据源1”(从下拉列表中选择),如图13-5所示。
图13-4 为数据源指定数据库提供者
图13-5 为表格组件指定数据源
经过上述设置之后,会发现指定的数据库中的内容已经自动显示到表格组件中了!此后如果对数据源进行操作,数据库中的内容也会被同时改动,并且表格中的数据也会同时更新。
由于表格、数据源、通用提供者、数据库提供者的属性、方法、事件比较多,此处只介绍其中个别的几个。更详细的使用请参考易语言安装程序附带的“易之表”例程。
13.1 通用提供者与数据库提供者
通用提供者组件和数据库提供者组件都可充当“数据提供者”,因属同一类组件,所以放在一起介绍。但它们也是有区别的。
(1)通用提供者。使用内存作为数据的存储仓库,全面支持所有数据操作接口。因此必要时可以将其他类型数据提供者内的数据导入到此类型中,以全面发挥数据源对数据的操纵能力。
(2)数据库提供者。使用数据库作为数据的存储仓库,不支持以下数据操作接口:置行高;置类型;置文本;置背景;置字体名;置字体尺寸;置字体属性;置边距;置文本输入格式;置对齐方式;置密码方式;合并;分解;加线条;删线条;初始尺寸同时改变列数;在中间插入行;插入列;删除列。
如果想对数据库提供者中的数据进行以上操作,应该先将数据通过数据源导出到通用提供者中。
通用提供者组件和数据库提供者组件没有重要事件。
通用提供者组件和数据库提供者组件没有专有方法。
13.1.1  通用提供者的重要属性
“初始行数”、“初始列数”属性
“初始行数”、“初始列数”属性均为整数型。指定初始数据的行、列数。默认值都是0。
当通用提供者跟数据源、表格正确关联后,如果不设置这两个属性,表格中仍然一片空白,看不出一点表格的样子(因为初始行列数默认值都是0)。为了美观可随便设定某个值。导入数据之前要清除这两个,清除方法:数据源1.初始尺寸(0,0)
13.1.2  数据库提供者的重要属性
1.“数据库文件名”属性
文本型。指定欲操作的数据库全路径文件名(*.edb)。
这是数据库提供者最重要的一个属性。
2.“字节集字段处理”属性
整数型。指定对字节集类型字段的处理方式。有以下可选值:0.跳过;1.视为图片数据;2.视为字节集数据,默认值是0,跳过。
如果确信数据库中没有字节集字段,可置为0;如果确信有字节集字段且为图片数据,则置为1;如果确信有字节集字段但不是图片数据,可置为2。通常保持默认值0,当然置为2是最保险的。
数据提供者,顾名思义就是数据的“提供者”,以供数据源组件进行处理。
注意:它是通过调用“数据源组件”的“方法”,对“数据提供者组件”中的数据进行处理。为什么数据源能够处理到数据提供者组件中的数据呢?因为两者已经“关联”在一起了。“关联”的方法就是把数据提供者组件数据源组件
的数据提供者属性设置为相应的数据提供者组件,用代码可表示为:
数据源1.数据提供者=“数据库提供者1”
数据源1.数据提供者=“通用提供者1”
3.“数据库密码”属性
易语言3.3以上版本提供了数据库加密功能,以保护数据库的安全。选择易语言3.3以上版本中的菜单:“数据库”→“结构编辑器”或使用“置数据库密码()”命令为一个打开的数据库更新密码。
而当数据库有密码时,可以通过在本属性中填充密码来顺利打开数据库。
13.1.3  具体应用
1.将数据库提供者中的数据“导入”到通用数据提供者的方法
易语言知识库中多次提到数据的导入导出问题,但又未明确给出使用方法(在‘易之表’例程中有),这给不少初学者带来麻烦。方法很简单,只需用到数据源组件的“添加()”方法:
数据源1.添加(数据库提供者1, , )
数据源1.添加(数据源2, , )
打开例程:“导入.e”,如图13-6所示。
图13-6 导入数据
里面的“显示数据”按钮就应用了“导入”功能。相关程序代
码如下:
子程序:_按钮2_被单击备注:“导入”数据
通用对话框1.初始目录=取当前目录 ()
如果真 (通用对话框1.打开 () =真)
数据库提供者1.数据库文件名=通用对话框1.文件名如果真结束
数据源1.初始尺寸(0, 0)    *备注:本行用于清除"数据源1"中的原有数据(原来是空数据)
数据源1.添加(数据库提供者1, , )
*备注:这一行就是“导入”——将“数据库提供者1”中的数据“导入”数据源1中(导入后立刻就能显示到表格中)
2.选用原则
作为最重要的两个数据提供者,通用提供者组件和数据库提供者组件的关系是:前者功能强大,可对数据进行各种操作,但没有直接的数据来源;后者功能受限,只能完成数据的基本操作,但可以直接连接到数据库。二者的选用原则是如下。
(1)如果要使用数据库,且对数据的操作不涉及外观设置(如修改字体、颜或单元格线条等),可选用数据库提供者。
(2)如果需要使用数据库,又想对数据进行外观设置,可同时使用数据库提供者和通用提供者组件(先把数据库提供者中的数据“导入”通用提供者中,再对后者操作)。
(3)如果没有用到数据库,可单独选用通用提供者。
二、数据源
数据源是数据提供者与数据处理者之间的纽带,数据源组件是可视组件,如图13-7所示。
13.2.3  数据源的专有方法
数据源组件的方法非常之多,目前有69个。这里不可能一一介绍,请大家查看支持库面板中的“数据类型”→“数据源”,提示面板里面将列出的数据源组件的所有属性方法和事件(显示于状态夹中),如图13-9所示。
图13-9 数据源的命令
数据源组件的方法分类如下。
(1)记录的操作类方法:“到首记录()”,“到尾记
录()”,“跳过()”,“跳到()”,“取记录号()”。
(2)行列的操作类方法:“取行数()”,“取列数()”,
“插入行()”,“添加行()”,“删除行()”,“插入列()”,
易语言教程2020“删除列()”。
(3)数据存取操作类方法:“置文本()”,“取文
本()”,“置数据()”,“取数据()”,“添加()”,“初始尺
寸()”,“存到字节集()”,“从字节集读()”,“存到文件()”,“从文件读()”,“单元格到字节集()”,“字节集到单元格()”,“单元格到文件()”,“文件到单元格()”,“刷新显示()”,“保存更改()”。
(4)外观的操作类方法:“置表头行数()”,“置表头列数()”,“置行高()”,“置列宽()”,“置文本()”,“置背景()”,“置字体名称()”,“置字体尺寸()”,“置字体属性()”,“置边距()”,“置对齐方式()”,“置初始属性()”。
(5)单元格操作类方法:“合并()”,“分解()”,“是否被合并()”,“加线条()”,“删线条()”,“是否有线条()”,“清除()”。
(6)打印操作类方法:“打印设置()”,“置打印设置()”,“取打印设置()”,“取打印页宽()”,“取打印页高()”。
提示:易语言附带的例程“易之表.e”中,演示了数据源组件及表格组件的绝大多数属性方法。
1.如何模拟按钮
打开例程:“数据源-模拟按钮.e”,如图13-10所示。
图13-10 “数据源-模拟按钮.e”
到首记录与到尾记录的程序代码如下:
子程序:_按钮到首记录_被单击
数据源1.到首记录()
═════════════════════════════
子程序:_按钮到尾记录_被单击
数据源1.到尾记录()
可以看出上述程序代码是使用了数据源的两个方法命
令。
上一记录与下一记录按钮的程序代码如下:
子程序:_按钮上一记录_被单击
数据源1.跳到(表格1.取光标行号() -1)
══════════════════════════════
子程序:_按钮下一记录_被单击
数据源1.跳到(表格1.取光标行号() +1)
这里没有用数据源组件的命令取行号,而是使用了表格组件取行号,这是因为表格如果添加了空白行的话,它的行号比数据源中的记录号要多,因此取表格的光标行号要更加准确一些。
增加行与删除行的程序代码如下:
子程序:_按钮增加一行_被单击
如果(数据源1.数据提供者≠“数据库提供者1”)
数据源1.插入行 (表格1.取光标行号 (), )
否则
数据源1.插入行 (数据源1.取行数() +1, )

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。