全国 【切换城市】欢迎您来到装修百科!
关注我们
我要装修

「10.Delphi数据库编程」7.ADO组件之ADOTable组件(delphi数据库控件)

发布:2024-10-05 浏览:35

核心提示:7.ADO组件之ADOTable组件ADOTable 组件属于数据集组件,使用该组件可用建立数据库表及索引,对已经存在的数据表进行插入、删除、修改等操作。在 Delphi 中,提供了 Table、Query、StoredProc 等组件来处理数据。一般情况下,对于桌面数据库来说,使用 Table 组件效率最好,而对于 SQL 数据来说,使用 Query 组件避免了 SQL 语句的转化,效率会更高,对于处理过程比较复杂、数据量大的 SQL 操作,最好使用存储过程来操作。ADOTable 组件位于 dbGo

7.ADO组件之ADOTable组件ADOTable 组件属于数据集组件,使用该组件可用建立数据库表及索引,对已经存在的数据表进行插入、删除、修改等操作。
在 Delphi 中,提供了 Table、Query、StoredProc 等组件来处理数据。
一般情况下,对于桌面数据库来说,使用 Table 组件效率最好,而对于 SQL 数据来说,使用 Query 组件避免了 SQL 语句的转化,效率会更高,对于处理过程比较复杂、数据量大的 SQL 操作,最好使用存储过程来操作。
ADOTable 组件位于 dbGo 页上,通过 ADO 连接到数据库上,从一个物理数据表中取出数据,并通过 TDataSource 组件把数据提供给一个或多个数据控制组件;另一方面,可以把用户通过数据控制组件输入的数据发送给物理数据库。
7.1ADOTable组件的主要属性Connection指定访问数据库所使用的 ADOConnection 组件ConnectionString指定连接字符串,在不使用 ADOConnection 组件的情况下,也可以直接连接数据库Active表示是否与数据库建立连接,取值为布尔类型:True / False,如果设置为 True,则表示与数据库建立连接,可以访问数据库;否则,表示数据集处于关闭状态,不能访问数据库表。
使用 Open 和 Close 方法对数据库表的操作效果进行修改 Active 属性的效果是一致的。
TableName指定访问的数据库表的名称。
ReadOnly表示是否只读,如果设置为 True,表示数据库表的数据不能被修改,可以防止数据库表中的记录被修改。
Bof表示当前记录指针所处的位置是否为数据表的第一条记录,属性值为布尔型Eof表示当前记录指针所处的位置是否为数据表的最后一条记录,属性值为布尔型如果 Bof 和 Eof 都为 True 的话,则数据表为空表CanModify表示数据库表是否可用被修改,属性值为布尔型,如果设置为 True,则表示可以被修改,否则表示不可被修改,如果表组件的 Readonly 设置为 True,则该属性将被设置为 Fasle。
Modified表示数据库表是否已经被修改,取值为布尔型7.2ADOTable组件的主要方法1.打开与关闭Open - 打开数据库表,Active 属性设置为 TrueClose - 关闭数据库表,Active 属性设置为 False2.浏览数据First - 将记录指针移动到第一条记录Last - 将记录指针移动到最后一条记录MoveBy - 将记录指针移动到与当前记录相关的某一记录处,格式:function MoveBy(Distance: Integer): Integer;其中,Distance表示要移动的记录数目,取值为正数时表示向下移动,为负数时表示向上移动。
返回实际一定的记录数目。
Next - 将记录指针后移一条记录Prior - 将记录指针前移一条记录3.编辑数据Append - 在数据库表的末尾添加一条新的空间记录并将该记录设置为当前记录。
Delete - 将当前记录从数据库表中删除。
Edit - 编辑数据库表的当前记录。
Insert - 在数据库表中插入一条新的空间记录,并将该记录设置为当前记录。
InsertRecord - 在数据库表中建立一个新的记录,与 Insert 的不同之处,直接将新记录的字段值以参数形式传递,且不需要调用 Post 方法。
格式:procedure InsertRecord(const Values: array of const);该方法会将缺少的字段值处理为 Null 值。
Post - 向数据库提交修改的记录。
SetFields - 以参数形式修改当前记录中的多个字段值。
格式:procedure SetFields(const Values: array of const);其中:Values 中包含将插入的每个字段的值,其顺序是根据表中字段的先后顺序决定的,缺少的字段会作为 Null 值处理。
Cancel - 取消对数据表的修改。
在数据更改未提交的情况下,该方法使记录恢复到修改前的状态。
4.书签的使用使用书签可以在数据表上快速定位记录指针。
Delphi 支持在当前记录上标记书签,以便在后面能够快速返回到书签的位置。
GetBookMark - 用于设置书签,返回一个 TBookMark 类型的值。
格式:function GetBookmark: TBookmark;GotoBookMark - 快速将记录指针定位到书签的位置处。
格式:procedure GotoBookmark(Bookmark: TBookmark);FreeBookMark - 释放书签,格式:procedure FreeBookmark(Bookmark: TBookmark); 5.查询数据记录Locate - 查询数据记录,格式:function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean;其中:KeyFields - 用逗号分隔的查询字段名称KeyValues - 要查询的字段值Options - 查询选项,如果包含loCaseInsensitive,则查询时不区分 KeyValues 中的大小写;如果包含 loPartialKey 时,可以实现近似查询7.3查找数据程序示例界面如下:所使用的组件及属性:组件属性值Panel1Caption''AlignalTopLabel1Caption'姓名'Edit1Text''Button1Caption'查找'ADOConnection1ConnectionStringProvider=MSDASQL.1;Persist Security Info=False;Data Source=demodbLoginpromptFalseConnectedTrueADOTable1ConnectionADOConnection1TableNamed_studentsActiveTrueDataSource1DataSetADOTable1DBGrid1AlignalClientDataSourceDataSource1示例代码如下:procedure TForm1.Button1Click(Sender: TObject);var chinese, math, english, total: Double;begin if ADOTable1.Locate('name', Edit1.Text, [loPartialKey]) then begin chinese := ADOTable1.FieldByName('chinese').AsFloat; math := ADOTable1.FieldByName('math').AsFloat; english := ADOTable1.FieldByName('english').AsFloat; total := chinese + math + english; Panel2.Caption := ADOTable1.FieldByName('name').AsString + ':' + floattostr(total); end else Panel2.Caption := '未找到';end;procedure TForm1.FormCreate(Sender: TObject);begin ADOTable1.FieldByName('student_id').DisplayLabel := '学号'; ADOTable1.FieldByName('name').DisplayLabel := '姓名'; ADOTable1.FieldByName('sex').DisplayLabel := '性别'; ADOTable1.FieldByName('chinese').DisplayLabel := '语文'; ADOTable1.FieldByName('math').DisplayLabel := '数学'; ADOTable1.FieldByName('english').DisplayLabel := '英语'; ADOTable1.FieldByName('student_id').DisplayWidth := 16;end;7.4主从结构数据表在 Delphi 中,通过主从结构显式地支持主从结构的数据表关系。
主从结构数据表关系设置相关的主要属性:MasterSourceMasterFields示例:数据准备:create table c_department ( department_id int4 primary key, department_name varchar(16));INSERT INTO c_department(department_id, department_name)VALUES(1, '计算机系');INSERT INTO c_department(department_id, department_name)VALUES(2, '土木工程系');create table d_students1 ( student_id varchar(64) primary key, name varchar(16), sex boolean, birthday date, department_id int4, total_score decimal(9,1));INSERT INTO d_students1(student_id, "name", sex, birthday, department_id, total_score)VALUES('x-20210001', '张三', true, '2000-05-06', 1, 520);INSERT INTO d_students1(student_id, "name", sex, birthday, department_id, total_score)VALUES('x-20210002', '李四', true, '2000-03-09', 1, 539);INSERT INTO d_students1(student_id, "name", sex, birthday, department_id, total_score)VALUES('x-20210003', '周五', false, '2001-09-10', 2, 528);INSERT INTO d_students1(student_id, "name", sex, birthday, department_id, total_score)VALUES('x-20210004', '赵六', true, '2000-08-28', 1, 517);INSERT INTO d_students1(student_id, "name", sex, birthday, department_id, total_score)VALUES('x-20210005', '姜七', false, '2000-07-06', 2, 547);INSERT INTO d_students1(student_id, "name", sex, birthday, department_id, total_score)VALUES('x-20210006', '贺八', true, '2000-11-01', 2, 533);界面设计如下图:组件属性设置如下:组件属性值ADOConnection1ConnectionStringProvider=MSDASQL.1;Persist Security Info=False;Data Source=demodb;ConnectedTrueLoginpromptFalseADOTable1ConnectionADOConnection1ActiveTrueTableNamec_departmentDataSource1DataSetADOTable1ADOtable2ConnectionADOConnection1ActiveTrueTableNamed_students1MasterSourceDataSource1MasterFieldsdepartment_idDataSource2DataSetADOTable2DBGrid1DataSourceDataSource1DBGrid2DataSourceDataSource2设置 MasterFields 的方法,单击从表组件 ADOTable2 的属性 MasterFields 设置框右侧的 ... 按钮,进入关联字段的设置对话框,如下图所示:通过该对话框将从表的关联字段与主表的关联字段建立联系即可。
7.5字段编辑器在 TADOTable 组件上右击选择 Fields Editor,即可打开字段编辑器,在字段编辑器中增加固定字段并进行编辑,如下图:在字段编辑器中定义计算字段:选择 ADOTable2 ,右击选择 Fields Editor,添加所有字段为固定字段,然后选择 NewField,如下图:设置Name、Type、FieldType,本例设置:Nameavg_scoreTypeFloatFieldTypeCalculated编写 ADOTable2 的 onCalcFields 事件代码:procedure TForm1.ADOTable2CalcFields(DataSet: TDataSet);begin ADOTable2avg_score.Value := round(ADOTable2total_score.AsFloat / 6.0 * 10) / 10;end;在字段编辑器中定义查看字段:在字段编辑器中右击选择 New Field,设置如下图所示:通过上面的设置,在 ADOTable2 中增加了 department_name 的显示,其数据来自于 ADOTable1 中。
在字段编辑器中拖放无论是计算字段、查看字段,以及数据表字段,均可以在字段编辑器中通过拖放操作来调整显示顺序。

  • 收藏

分享给我的朋友们:

上一篇:Delphi报表神器FastReport VCL v6.5.7来啦!那些个糟心BUG已修复 下一篇:[汉典装饰公司]室内装修如何做好预算表才能省钱(汉典装饰公司)

一键免费领取报价清单 专享六大服务礼包

装修全程保障

免费户型设计+免费装修报价

已有312290人领取

关键字: 装修报价 装修网 装修风格

发布招标得免费设计

申请装修立省30%

更多装修专区

点击排行