您的位置: 网站首页 > 数据库 > SQL Server数据库应用技术 > 第11章 开发SQL Server应用程序 > 【11.2 使用Delphi开发】

11.2 使用Delphi开发

 

11.2  使用Delphi开发

11.2.1  Delphi概述

DelphiBorland公司开发的,它以ObjectPascal为基础,扩充了面向对象的能力,完美地结合了可视化的开发手段。

Delphi作为第4代编程语言,与Visual C相比,显得更简单、更易于掌握,而与Visual Basic相比,Delphi则显得功能更强大、更实用。所以说,Delphi同时兼顾了Visual C简单易学和Visual Basic功能强大的特点。

Delphi在数据库应用软件开发方面的优点比较突出。它支持多层数据结构模式、数据库的分布式处理,使得Delphi更容易被企业级应用开发所采用。

SQL Server 2000Delphi系统完全兼容,不仅可以利用Delphi所特有的BDE组件来开发大多数基于本地、客户端/服务器和ODBCSQL Server数据库平台程序时,显得更从容而高效。并且,在应用程序开发时,可以直接使用SQL语言来访问数据库并且操纵其中的数据。

下面将以Delphi 7.0为例来介绍SQL Server应用程序的开发。

11.2.2  开发环境介绍

Delphi是一种可视化的程序开发工具,开发者可以把组件拖放到窗体来进行应用程序的开发,双击组件即可编辑该对象事件的代码,这种开发方法即“事件驱动”。

Delphi 7.0的开发环境如图11-1所示,它主要包括5个部分,分别如下。

·    主窗口:包括菜单栏、“标准”工具栏、“查看”工具栏、“调试”工具栏、“组件”面板。其中标准工具栏包括新建、打开、保存等按钮,通过“查看”工具栏可以切换窗体窗口和单元窗口,通过“调试”工具栏可以运行或停止当前的程序,通过“组件”面板可以选择各种对象组件。

·    对象查看窗口:可以以树型视图查看工程中的各种对象。

·    对象属性窗口:可以设置对象的属性和相应的事件,从而发挥组件的功能。

·    窗体设计窗口:可以在窗体中设计和安排各种组件。

·    单元窗口:包括代码浏览器和代码编辑器两部分,通过代码浏览器中可以指定要查看的代码,在代码编辑器可以查看或编辑指定的代码。

11-1  Delphi 7.0界面

11.2.3  利用BDE组件开发

BDEBorland Database EngineBorland数据库引擎)是Delphi所特有的为应用程序提供一个访问各种数据库的统一接口,是连接应用程序与数据库的桥梁。

在利用Delphi开发数据库应用程序时,BDE的功能就是负责与数据库进行联系,然后提供一个接口让其他组件使用,它是Delphi数据库功能的核心部分。

下面介绍利用BDE组件连接SQL Server 2000数据库开发应用程序的一般步骤。

1.设置ODBC数据源

要访问SQL Server数据库,首先要为其设置ODBC数据源,可通过如下步骤设置。

1)通过“开始”菜单或控制面板执行BDE管理器程序,弹出如图11-2所示窗口。

2)在BDE管理器中单击ObjectODBC Administrator命令,弹出如图11-3所示“ODBC数据源管理器”对话框。

11-2  BDE 管理器

11-3  ODBC数据源管理器

3)在“用户DSN”选项卡中,单击“添加”按钮,弹出如图11-4所示对话框,选择数据源的驱动类型为SQL Server

11-4  创建新数据源

4)单击“完成”按钮,弹出如图11-5所示“创建到SQL Server的新数据源”对话框,在该对话框内的“名称”文本框中输入数据源名称,在“服务器”文本框中输入SQL Server 2000数据库服务器的名称。

11-5  创建到SQL Server的新数据源

5)单击“下一步”按钮,弹出如图11-6所示对话框,根据具体情况可以选择Windows身份验证方式或WindowsSQL Server混合验证方式。

11-6  选择验证方式

6)单击“下一步”按钮,弹出如图11-7所示对话框,单击“更改默认的数据库为”复选框,单击其下方的下三角按钮,可在弹出的下拉列表框中选择合适的数据库,即可将该数据库设定为默认的数据库。

7)单击“下一步”按钮,弹出如图11-8所示对话框,在其中可以进行数据库的加密、区域等设置。

8)设置完成后,单击“完成”按钮,弹出如图11-9所示对话框,在其中显示了即将要创建的数据源信息,单击“测试数据源”按钮可对其配置进行测试,如果配置正确,则会弹出测试成功的对话框。

11-7  指定默认的数据库

11-8  其他设置

11-9  测试数据源

9)单击“确定”按钮,就可将该数据源添加到ODBC管理器中,如图11-10所示,其中的dic数据源即为刚刚添加的SQL Server 2000数据库。

11-10  创建ODBC数据源成功

2.创建BDE别名

设置好ODBC数据源后,需要在BDE管理器中为这个源添加一个Alias(别名),在以后Delphi开发程序的过程中,可以利用这个别名来连接SQL Server 2000数据库。

11-11  新数据库别名

 

下面就为刚才创建的数据源添加别名,操作步骤如下:

1)打开BDE管理器,在图11-2所示窗口中单击Object(对象)→New(新建)命令,弹出如图11-11所示对话框,在其中选择SQL Server数据库驱动。

2)选择完成后,单击“OK”按钮返回BDE管理器窗口,在左侧的对象列表中即出现新建的项目,默认名称为ODBC1,如图11-12所示。

11-12  创建BDE别名

3在右侧的定义列表中,可以对其属性进行设置,在ODBC DSN栏中可以指定ODBC数据源的名称,这里可以选择刚刚建立的dic。在OPEN MODE(打开方式)栏中可以访问数据库的方式,可以选择只读(READ ONLY)或可读可写(READ/WRITE),这里选择READ/WRITE。在USER NAME(用户名)栏中可以指定访问数据库时使用的登录账号,还可在其他栏中设定其他属性。

4)设置完成后,右击该对象,在弹出的快捷菜单中选择Apply命令,从而保存对属性和名称所做的修改。

3.使用BDE组件操作SQL Server数据库

Delphi 7.0中提供了多种BDE组件,使开发人员能够很方便地连接数据库并访问和操纵其中的数据。要使用这些BDE组件,一般可通过BDE组件面板来实现,如图11-13所示。

11-13  BDE组件

首先需要建立与数据源的连接,单击BDE组件面板中的TDatabase(数据库)组件按钮,再单击窗体设计窗口,该组件即被添加到窗体中,双击该组件对象,弹出如图11-14所示对话框。在Alias name(别名)下拉列表框中选择上一步中设定的BDE别名,在Name(名称)文本框中可以输入指定该数据源连接的名称,在Option(名称)选项组中,单击Login prompt(登录提示)复选框,取消对其选择,则在连接时将不弹出登录对话框,设定完成后单击OK(确定)按钮保存设置。

11-14  指定连接别名

此时可在“对象属性窗口”中设置其他属性,选择TDatabase(数据库)对象,在属性窗口中将其Conneted(连接)属性设置为True(真),如图11-15所示,第一次将其设置为True时将弹出一个登录对话框,登录通过后,成功连接数据库,将不再提示连接。

11-15  设定连接属性

设定好TDatabase组件后,可以通过TTable(表)组件来访问SQL Server数据库中的表,在BDE组件面板中选择TTable组件,将其添加至窗体,一般需要对如下属性进行设置。

·    DatabaseName指明应用程序所要利用的数据源,这里可以选择TDatabase组件中的DatabaseName属性值,也可以直接选择BDE管理器中设置的别名。不过利用TDatabase组件,可以使得程序连接数据库时,不弹出登录对话框,因而受到开发人员的喜爱。

·    TableName指定数据源后,可以从指定数据库中选择要操作的表。

·    ReadOnly若该值为True,则以只读方式打开表,否则为可读可写。

·    Active表明当前指定的表是否为激活状态。若设置成功,则表明已连接上数据库。

·    Filter设置当前表的过滤,若设置该属性,则只有满足条件的记录才会显示。

·    Filtered确定Filter中设置的过滤是否有效,取True时则有效。

用户还可以通过TQuery(查询)控件来访问数据库,与TTable相比,TQuery显得更为强大,更易于操作,因为它支持SQL语句,因此具备了更强大的关系查询功能,这就使得开发更复杂数据库程序变得可能,可以同时对数据库中多张表进行访问,并且允许使用SQL语句直接操纵数据库。

TTable组件一样,在BDE组件面板中选择TQuery组件,将其添加到窗体中,它需要设定的组件属性如下。

·    DatabaseNameTTable中一样,用来指明要使用的数据源。

·    DataSource指明引入当前字段的DataSource组件。

·    SQL这是该组件最重要的属性,可以用来设置操纵数据的SQL语句。

·    Params设置和观察sql语句中使用参数的名称、类型和值。

·    ParamCountParams属性中参数的个数。

Delphi中可以使用两种SQL语句,静态SQL语句和动态SQL语句。静态SQL语句一般比较固定,其中不包含动态参数,当程序运行时,直接将该SQL语句传递给数据    库执行。动态SQL语句中包含一系列动态参数,在程序运行时,各参数值是可变的,可以动态地为SQL语句中的参数赋值。在程序的交互过程中,这种动态的SQL语句作用是巨大的。

设置静态SQL语句比较简单,单击TQuerySQL属性右侧的按钮,在弹出的字符列表编辑器中直接编辑SQL语句即可,如图11-16所示。

11-16  编写SQL语句

除此之外,静态SQL语句也可以在程序运行过程中通过代码赋值给TQuerySQL属性。不过在使用的时候,必须先关闭当前的TQuery组件,再调用Clear方法清除SQL的属性值,再将新的SQL语句赋值给SQL属性。若要将“select * from dic”语句赋值给Query1组件,可以通过如下代码实现。

var

  sqlline: string;

begin

sqlline:= 'select * from dic';

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add(sqlline);

Query1.Open;

end;

设置好SQL属性后,可以通过Open方法或ExccSQL方法执行SQL语句,两种不同在于Open方法只用来执行select等查询语句,而ExecSQL还可用来执行其他SQL语句,如INSERTUPDATEDELETE等语句。

动态SQL语句中,参数名前加“:”表示为一个动态参数,如“select word=:value from :table”,其中valuetable都为参数。在执行之前,必须为语句中的动态参数赋值,再执行SQL语句。赋值时,可以通过参数数组给指定的参数赋值,数组的下标从0开始,若要给第一个参数赋值为“abc”,则代码如下:

Query1.Params[0].AsString:='abc';

还可以使用ParamByName方法通过参数名称给指定参数赋值,若要给table参数赋值为“dic”,则代码如下:

Query1.ParamByName['table'].AsString:='dic';

要访问TTableTQuery中的数据集,最简单的办法是使用Delphi提供的数据控制组件,建立与TQueryTTable的联系,就可以在其中查看或操纵数据。为了使读者更清楚地了解这个过程,下面根据访问数据库的几种操作,介绍通过代码来操纵记录的方法。

1)移动记录指针。

通常返回的数据集不止一条记录,为了控制要显示当前的数据,将指针移动到要显示的数据记录。Delphi提供了以下几种方法。

·    First将指针移动到数据集的第一条记录处。

·    Last将指针移动到数据集的最后一条记录处。

·    MoveBy(i)i为正整数,则将当前指针向后移动i个记录,若i为负整数,则将当前指针向前移动i个记录。

·    Prior将指针向前移动一个记录。

·    Next将指针向后移动一个记录。

·    GoToKey首先用Edit方法将TTable组件置于查询状态下,并存储当前查询值缓冲区的内容,再用FindByName(string)方法根据string字段在整个数据集中进行查询,获得该字段信息,最后使用GoToKey将指针移动到这条记录上。

若要实现单击一个按钮在Edit1Edit2文本框中显示Table1中第一条记录的word字段和mean字段的值,可以在按钮中添加如下单击事件代码。

procedure TForm1.Button1Click(Sender: TObject);

begin

with Table1 do

begin

Edit1.Text:=Table1.FieldValues['word'];

Edit2.Text:=Table1.FieldValues['mean'];

end;

end;

2)操纵记录。

·    Append在当前数据集末尾追加新记录。

·    Cancel在对数据集的修改未提交给数据库前,运用此方法取消当前的修改。

·    Delete将当前的记录从数据库中删除。

·    Edit编辑当前的记录,若为空则插入新记录。

·    Post向数据库提交一个修改的记录。

·    SetFields在当前记录中修改多个字段的数值。使用前先调用Edit方法,将数据集处于编辑状态,修改后调用Post方法将更改提交给数据库。

若要将一条记录插入到另一条记录之前,可以执行以下语句:

with Table1 do

begin

//将记录指针移动到第一条处

First;

//在第一条记录前插入记录

Insert;

//设定各个字段的值

FieldValues['word']:=Edit2.Text;

FieldValues['mean']:=Edit3.Text;

//提交修改

Post;

end;

11.2.4  利用ADO方式开发

ADO作为一种新的数据库访问技术,它的优越性已经被越来越多的企业和程序员所认同。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。作为与ADO同一母体的SQL Server 2000,它对ADO的支持非常好,Delphi 7.0也对使用ADO的方式来开发数据库应用程序全面支持,这种支持是通过ADO组件来实现。利用这些组件,可以迅速使用很少的代码直接连接数据库,并且比使用BDE的性能要高。

不同于前面所讲的利用数据库引擎BDE的方式来进行数据库的访问,在Delphi中使用ADO的方式来进行的数据库访问,可以不在BDE中设置别名,而直接使用微软的OLE DB访问ODBC数据源或直接访问SQL Server 2000中的数据后台。

DelphiADO组件面板如图11-17所示。

11-17  ADO组件

这些组件与BDE组件在开发数据库程序的方法步骤中处于同一个层次,所以它们有很多用法和实现的功能是相同的,只不过因为在访问数据库的方式上有所不同,因此会有一些特殊的属性和方法。

1.连接SQL Server 2000数据库

单击ADO组件面板上的TADOConnectionADO连接)组件来实现与SQL Server 2000服务器连接。双击该图标弹出如图11-18所示对话框。

单击“Build”按钮弹出如图11-19所示数据链接属性向导。在列表中选择要连接的一种驱动类型,这里选择“Microsoft OLE DB Provider for SQL Server”连接SQL Server 2000数据库。

单击“下一步”按钮,打开“连接”选项卡,如图11-20所示,在其中可以设置服务器名称、身份验证和数据库。设置完成后,可单击“测试连接”按钮来检查连接是否成功。

11-18  创建连接字符串

11-19  选择数据库驱动

11-20  设置连接的服务器和库

测试连接成功后,单击“确定”按钮,此时TADOConnection组件的ConncetionString属性设置成功,此外还可以设置LoginPrompt属性来决定连接时是否弹出登录对话框,设置Connected属性来决定在程序运行时是否激活该连接。

2.操纵数据库的ADO组件

使用TADOConnection组件连接到数据库后,可以通过TADOCommandTADODataSetTADOTableTADOQuery等组件来操纵数据库。

TADOCommand组件可以用来执行对数据库的操作,通过是执行一些不用返回结果的SQL语句。例如SQL数据库的插入、删除或不用返回信息的存储过程。

TADODataSet是最常用的ADO组件,也是获取和操纵ADO数据的主要组件,它通过直接使用SQL语句来对数据库进行访问和操纵。与TADOCommand相比,能够获取SQL命令执行后的一个数据集,它能被数据源组件引用,从而与数据库控制组件相联系。所以对于那些不输出数据结果的数据操作语句,最好通过TADOCommand组件来执行。

TADOTableTADOQuery组件的使用方法和BDE中的TTableTQuery组件很相似。TADOTable可以用来从单个数据表中获取数据,TADOQuery可以用来通过sql语句操纵多张表。