 
         
         
         
         
        版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 用户1用户n数据源数据源数据集数据集BDE驱动程序数据库会话通过BDE访问数据库的体系结构u 应用程序对数据库的访问是通过数据库别名实现的,应用程序对数据库的访问是通过数据库别名实现的,数据库别名则需要在数据库别名则需要在 BDE管理器中建立并配置。管理器中建立并配置。u 打开打开BDE管理器的方法为:管理器的方法为: 开始开始程序程序Borland Delphi7BDE administrator BDE管理器显示窗口 例例1: 配置配置InterBase 数据库并建立一个数据库并建立一个Interbase 数据库别名。已知该数据库的库文件为数据库别名。已知该数据库的库文件为:d:Inte
2、r baseexamplesdatabase employee. gdb (1)配置配置InterBase 数据库数据库 打开打开BDE 管理器,单击管理器,单击Configuration 标签页标签页并展开并展开Drivers Native下的所有数据库名称,选下的所有数据库名称,选择择IntrBase,则,则BDE管理器右边的管理器右边的Definition窗口窗口就会显示出配置就会显示出配置InterBase数据库使用的所有参数,数据库使用的所有参数,请将请将SERVER NAME和和USER NAME两个参数设两个参数设置如下:置如下: ServerName:d: InterBasee
3、xamplesdatabase employee. gdb UserName:sysdba 其他参数可使用其默认值,此时其他参数可使用其默认值,此时BDE管理窗口显示内管理窗口显示内容如下图所示,若在容如下图所示,若在InterBase 的左边出现一个绿色的三的左边出现一个绿色的三角图标,则表示已修改了该数据库的配置参数,单击工具角图标,则表示已修改了该数据库的配置参数,单击工具条上的条上的Apply 按钮保存修改后的数据库配置按钮保存修改后的数据库配置. 例例2:以访问以访问Access数据库为例,具体说明数据库为例,具体说明ODBC的的使用方法使用方法 .(1) 打开打开ODBC管理器管理
4、器 打开方法:打开方法:Delphi Database Explore,则打开一个则打开一个SQL Explore窗口,选择窗口,选择“Databases”子窗口中的根目录,然后选择此窗子窗口中的根目录,然后选择此窗口的口的Object OBDC Administrator 菜单,此时菜单,此时打开一个名为打开一个名为“ODBC数据源管理器数据源管理器”的对话框的对话框窗口窗口 ODBC数据源管理器对话框创建新数据源对话框ODBC Microsoft Access安装对话框创建数据库话框例例3: 使用已创建的使用已创建的ODBC数据源及数据源及Delphi的软件工的软件工具具Database
5、Desktop创建创建Access数据库表数据库表 .(1) 创建表创建表 Delphi Tools Database Desktop,然后,在,然后,在显示的窗口上选择菜单显示的窗口上选择菜单File NewTable,将打,将打开一个开一个Create Table(创建表)对话框,在此对话(创建表)对话框,在此对话框上,选择框上,选择AccessDB作为表的类型,然后单击作为表的类型,然后单击“OK”按钮,则显示一个名为按钮,则显示一个名为Create AccessDB Table对话框窗口。对话框窗口。 DataSource1DBGrid1DBNavigator1Table1TableT
6、ype属性值及其对应的表类型记录指针移动程序窗体图8-3-2 利用变量数组获取字段的值单击下图即说明了操作的主要步骤: 右击右击菜单双击字段对象编辑器字段对象编辑器及其右击菜单设置计算字段Table1Table2设置查找字段向窗体上拖放后字段 播放音乐主窗体设置细表的Master Fields属性。3)定义要创建数据表的结构u定义数据表结构是通过数据表对象的FieldDefs属性的Add方法来实现,定义格式如下:uProcedure Add(const Name: String; DataType: TFieldType; Size: Integer = 0; Required: Boolea
7、n = False);其中:Name用于指定字段名称。uDataType用于指定字段类型。uSize用于指定字段的宽度。要注意,此参数只适用于字符和备注两种类型的字段,而整型、日期型等类型字段的大小固定为0。uRequired用于设置字段值是否必须非空,为True时表示非空。对强制非空的字段来说,当保存记录时,要求字段必须有确定的值。3)建立索引建立索引u创建数据表时建立索引,则要使用数据表对象的IndexDefs属性的Add方法。uAdd方法定义格式如下:uprocedure Add(const Name, Fields: String; Options: TIndexOptions);其中
8、:uName用于指定要建立的索引名,注意,Paradox表的主索引名为空。uFields用于指定被索引字段名。如果是复合索引,字段名之间用分号隔开。uOptions用于指定创建表的索引类型,此参数是集合类型,其可能取值和含义见下表 : Boolean = False);5)使用CreateTable创建表 u功能是按表对象的设置创建数据表;u格式为:表对象名.CreateTable;u例1:用程序代码在C盘根目录下创建一个名为“成绩1.db”的成绩表,它包含学号(C,15)、C语言(N)、Pascal程序设计(N)和名次(I)字段,并要求按学号建立主索引,按名次建立降序次索引。u建立一个新项目
9、,在主窗体上放一个按钮(Button)、表(Table)、表格(DBGrid)和数据源(DataSource)等组件,并编写按钮的OnClick事件,代码如下:uprocedure TForm1.BitBtn1Click(Sender: TObject);uVaru NewTable:TTable; /定义表对象定义表对象ubeginu tryu newtable:=Ttable.Create(self); /新建立一个表对象u with newtable dou beginu DatabaseName:=c:; /设置新表所在文件夹或数据库别名u TableName:=成绩1.db;/确定表
10、名u TableType:=ttParadox; /建立一个 Paradox表uend;u with FieldDefs do beginu Add(学号,ftString,15,True); /添加字段u Add(C语言,ftFloat,0,False);u Add(Pascal,ftFloat,0,False);u add(名次,ftword,0,false);u end;u IndexDefs.Add(,学号,ixPrimary); /添加主索引u IndexDefs.Add(MC,名次,ixdescending); /添加名为MC的子降序次索引u CreateTable;/建表u en
11、d; ufinallyu newtable.free;u end;u /打开新建的成绩表u Datasource1.DataSet:=Table1;u DBgrid1.DataSource:=Datasource1;u with Table1 dou beginu DatabaseName:=c:;u TableName:=成绩表.db;u Active:=true;u enduend;8.3.5通过代码修改表结构通过代码修改表结构u用Table组件动态修改表结构的方法:u先创建一个新表,然后将旧表中需要保留的数据导入新表中,删除旧表,最后将新表名改成旧表名。u例如,将新创建的“成绩1.db”
12、数据表新增加一个“数字电路”成绩字段。步骤如下:u1)建立一个包含原成绩表所有字段及“数字电路”字段的新表,命名为“成绩表1.db”,建立方法可参照8.3.4节。u2)将旧表“成绩1.db”中的数据导入到新表“成绩表1.db”中。uBatchMove 组件用于将源数据表中的多条记录复制到目的表中。8.3.5通过代码修改表结构通过代码修改表结构u此组件需要设置它的下列属性:uDestination:用于设置要导入数据的表,可用Table1表示。uSource :指向数据来源表,即本节上面所提到的旧表,用Table2表示。uMode:用于设置成批处理数据的模式,本例设置为batAppend,当然你
13、还可以根据自己的需要设置其它模式。可选择的模式及其含义如下表:uMappings 用于设置源数据表向目的数据表追加记录时新旧表字段之间的对应关系。u格式:目的表字段名=源表字段名。uMappings是一个多行文本属性,每一行对应一个关系。u学号=学号uC语言=C语言uPascal =Pascal u名次=名次u属性设置完成后使用BatchMove组件的Execute方法就能将旧表中的数据导入到新表. u方法:u设计期时,可通过右击BatchMove组件,在显示的下拉菜单中选择Executeu运行期,通过程序代码调用BatchMove组件的Execute方法u3)删除旧表,并将新表名改成旧表名u
14、删除文件 使用DeleteFile函数可完成删除文件的操作u定义格式:function Delete : string): Boolean;u功能:删除指定的文件,当删除成功时,函数的返回值为True,否则返回FalseuIf (C:成绩1.db) thenu Begin u If Deletefile(C:成绩1.db) thenu ShowMessage(删除C:成绩1.db文件成功)u Elseu ShowMessage(删除C:成绩1.db文件失败);u EnduElseuShowmessage(没有找到要删除的文件);8.4Query 组件组件uQuery组件是另一种表组件,Tabl
15、e表组件主要用于直接访问一个物理表,而Query表则使用SQL语句来访问数据库中一个或多个数据表中的数据,且默认情况下通过Query组件查询的数据是只读的,而默认情况下使用Table组件显示的数据表都是可读写的。uQuery 组件的特点:u1)通过SQL 语句可以同时访问多个表;u2)可以选择表中的某些行或列;u3)比Table表有更高的执行效率,适合开发远程数据库应用程序。8.4.1使用使用Query 组件打开数据表组件打开数据表u打开方法:u1)设置Query 组件使用的数据库别名,即设置该组件的DatabaseName属性;u2) 设置SQL属性,用于保存Query 使用的SQL语句;
16、u3) 通过其Open方法或Active属性打开查询表。u例:通过query组件查询Dbdemos数据库中customers表的数据Query1Datasource1DBGrid1使用TQuery组件打开数据表8.4.1修改查询表修改查询表u默认情况下,Query表组件只读,若想修改则应使其处于可修改状态。一般情况下,当该组件的RequestLive属性值为True时,查询表是可修改的,但这种设置方式并不总是有效,它还与访问的数据库有关,若query组件的SQL属性中出现下列情况,即使RequestLive属性为True,也不能使其处于可修改状态:u含有JOIN、UNION、INTERSECT
17、或 MINUS操作;u在Select语句中出现DISTINCT 关键字;u在列引用或计算字段中出现聚集函数;u使用GROUP BY 或 HAVING 子句;u在FROM子句中有子查询;uORDER BY 子句中有非索引字段。u因此,在修改数据表之前,最好通过CanModify函数判断查询表是否可修改 u如:If Query1.CanModify ThenuBeginu 修改查询表中数据的语句序列uEnd;8.4.3动态查询u实现方法:u1) 通过修改SQL语句;u2) 通过修改动态参数u1.修改修改SQL语句语句u实现步骤:实现步骤:u1)关闭查询表使用Close方法或使其Active属性值;
18、u2)使用SQL的Clear方法清除查询表的SQL属性值;u3)使用SQL的Add方法增加新SQL语句;u4)使用查询表的Open方法打开查询表。u例1,将Query1的SQL语句修改为“Select * from customer where custno=1235”。uQuery1.Close;uQuery1.Sql.Clear;uQuery1.Sql.Add( Select * from customer where custno=1235);uQuery1.Open;u程序运行期间,使用SQL的StringsIndex子属性也能对SQL属性进行局部修改(其中Index值从0 开始,In
19、dex表示SQL语句的第Index+1行),u例如:Query1.Sql.Strings0:= select * from customer; /仅修改SQL属性值中的第一行内容。u2.使用动态参数使用动态参数u一般来说,在一般来说,在SQL语句中若出现语句中若出现“:参数名:参数名”格式的子格式的子句,则认为这个句,则认为这个“参数名参数名”是一个动态参数是一个动态参数.u动态参数的赋值方法动态参数的赋值方法:u1)在设计期设置初值在设计期设置初值u当写好含有动态参数的当写好含有动态参数的SQL命令后,到查询表组件的对命令后,到查询表组件的对象观察器上找到它的象观察器上找到它的Params属
20、性,单击其编辑框中的属性,单击其编辑框中的对话框按钮,则显示如图对话框按钮,则显示如图8-4-3所示的动态参数列表窗所示的动态参数列表窗口,在此窗口中选择要设置的动态参数,在动态参数的口,在此窗口中选择要设置的动态参数,在动态参数的对象观察器上设置对象观察器上设置DataType和和Value属性属性Query1对象观察器参数Cno的对象观察器应用程序窗体图8-4-3 设置动态参数初始值图示动态参数列表窗口Cno的初值设置处u2)在运行期赋值u运行期对查询表的动态参数赋值,可使数据查询更加灵活,以满足用户的不同查询需求。设置动态参数的步骤如下:u关闭查询表。调用Tquery的Close方法;u
21、释放以前查询时分配的资源。调用Tquery的Unprepare方法;u为动态参数赋值。调用Tquery的ParamByName函数;u为当前查询分配资源。调用Tquery的Prepare方法;u打开查询表,实现查询。调用Tquery的Open方法。u例2,用代码方式为Query1查询表的动态参数Cno赋值,要赋的值为1231,其中:Query1的SQL属性值为:Select * From Customer.db where Custno=:Cno。则程序代码如下:uQuery1.Close;uQuery1.UnPrepare;uQuery1.ParamByName(Cno).AsInteger:=1231;uQuery1.Prepare;uQuery1.Open;u为动态参数赋值的语句个数由SQL属性中设置的动态参数的个数决定,另外,通过代码还能设置动态参数的数据类型(DataType),如设置Cno参数的数据类型为整数型,代码如下:Query1.ParamByName(CNo).DataType:=ftInteger;u3)通过数据源自动赋值 u利用Table表组件可以建立主细表查询,虽然建立方法不太复杂,但有一个前提条件是细表必须按关键字段建立索引并打开,而使用查询表动态参数的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 近期猫咪比赛活动方案
- 虎年狂欢充值活动方案
- 走访老人活动策划方案
- 街道宣传活动方案
- 超市冰淇淋活动方案
- 诗社成立活动方案
- 近期河南音乐活动方案
- 街道医保宣传活动方案
- 2025年地热能与储能技术结合的电网调峰解决方案报告
- 2025年法医学考试《法医学基础知识》备考题库及答案解析
- 增强营销策略方案
- 十五五规划12项重大部署专题解读
- 电信宽带服务协议6篇
- 比亚迪讲解课件
- 人工智能+智能路灯节能减排分析报告
- 湖南单招历史试题及答案
- 2025中国华腾工业有限公司招聘笔试历年参考题库附带答案详解(3卷合一)
- 2025宝鸡社区考试真题及答案
- 医院大型活动安全保卫方案
- 液晶显示器件模组制造工晋升考核试卷及答案
- 运动处方案例解析
 
            
评论
0/150
提交评论