用ado实现delphi查询

TADOQuery组件使Delphi开发人员能够使用SQL从ADO数据库中的一个或多个表中获取数据。...

TADOQuery组件使Delphi开发人员能够使用SQL从ADO数据库中的一个或多个表中获取数据。

这些SQL语句可以是DDL(数据定义语言)语句,如CREATE TABLE、ALTER INDEX等,也可以是DML(数据操作语言)语句,如SELECT、UPDATE和DELETE。但是,最常见的语句是SELECT语句,它生成的视图类似于使用表组件生成的视图。

注意:尽管可以使用ADOQuery组件执行命令,但ADOCommandcomponent更适合于此目的。它最常用于执行DDL命令或执行不返回结果集的存储过程(即使您应该对此类任务使用ADOStoreDproc)。

ADOQuery组件中使用的SQL必须为正在使用的ADO驱动程序所接受。换句话说,您应该熟悉MS Access和MS SQL之间的SQL编写差异。

与使用ADOTable组件时一样,使用ADOQuery组件使用其ConnectionString属性建立的数据存储连接或通过Connectionproperty中指定的单独ADOConnection组件访问数据库中的数据。

要使Delphi表单能够使用ADOQuery组件从Access数据库检索数据,只需将所有相关的数据访问和数据感知组件放在Delphi表单上,并按照本课程前几章中所述创建链接。数据访问组件:DataSource、ADOConnection、ADOQuery(而不是ADOTable)和一个数据感知组件(如DBGrid)就是我们所需要的。如前所述,通过使用对象检查器设置这些组件之间的链接,如下所示:

DBGrid1.DataSource = DataSource1DataSource1.DataSet = ADOQuery1ADOQuery1.Connection = ADOConnection1//build the ConnectionStringADOConnection1.ConnectionString = ...ADOConnection1.LoginPrompt = False

执行sql查询

TADOQuery组件不像TADOTable那样具有TableNameproperty。TADOQuery有一个名为SQL的属性(TStrings),用于存储SQL语句。您可以在设计时使用对象检查器或在运行时通过代码设置SQL属性的值。

在设计时,通过单击对象检查器中的省略号按钮来调用SQL属性的属性编辑器。键入以下SQL语句:“从作者中选择*”。

SQL语句可以通过两种方式之一执行,具体取决于语句的类型。数据定义语言语句通常使用ExecSQL方法执行。例如,要从特定表中删除特定记录,可以编写delete DDL语句,并使用ExecSQL方法运行查询。通过将TADOQuery.Active属性设置为True或调用OPEN方法(基本相同),可以执行(普通)SQL语句。这种方法类似于使用TaToTable组件检索表数据。

在运行时,SQL属性中的SQL语句可以用作任何StringList对象:

with ADOQuery1 do begin Close; SQL.Clear; SQL.Add:='SELECT * FROM Authors ' SQL.Add:='ORDER BY authorname DESC' Open; end;

上述代码在运行时关闭数据集,清空SQL属性中的SQL字符串,分配新的SQL命令,并通过调用Open方法激活数据集。

请注意,为ADOQuery组件创建字段对象的持久列表显然没有意义。下次调用Open方法时,SQL可能会非常不同,以至于整个文件名(和类型)可能会发生变化。当然,如果我们使用ADOQuery从一个具有常量字段集的表中获取行,则情况并非如此,结果集取决于SQL语句的WHERE部分。

动态查询

TADOQuery组件的一个重要属性是Params属性。参数化查询允许使用SQL语句WHERE子句中的参数进行灵活的行/列选择。Params属性允许在预定义的SQL语句中重放参数。参数是WHERE子句中的值的占位符,在查询打开之前定义。要在查询中指定参数,请在参数名称前使用冒号(:)。在设计时,请使用对象检查器按如下方式设置SQL属性:

ADOQuery1.SQL := ' SELECT * FROM Applications WHERE type = :apptype'

关闭“SQL编辑器”窗口时,通过单击对象检查器中的省略号按钮打开“参数”窗口。

前面SQL语句中的参数是namedaptype。我们可以在设计时通过“参数”对话框设置Params集合中的参数值,但大多数情况下,我们将在运行时更改参数。“参数”对话框可用于指定查询中使用的参数的数据类型和默认值。

在运行时,可以更改参数并重新执行查询以刷新数据。为了执行参数化查询,必须在执行查询之前为每个参数提供一个值。要修改参数值,我们可以使用Params属性或ParamByName方法。例如,给定上述SQL语句,在运行时我们可以使用以下代码:

with ADOQuery1 do begin Close; SQL.Clear; SQL.Add('SELECT * FROM Applications WHERE type =:apptype'); ParamByName('apptype').Value:='multimedia'; Open;end;

与使用ADOTable组件时一样,ADOQuery从一个表(或两个或多个表)返回一组或多个记录。使用“数据集中的后台数据”一章中描述的相同方法集在数据集中导航。

导航和编辑查询

一般来说,进行编辑时不应使用ADOQuery组件。基于SQL的查询主要用于报告目的。如果查询返回结果集,有时可以编辑返回的数据集。结果集必须包含来自单个表的记录,并且不能使用任何SQL聚合函数。编辑ADOQuery返回的数据集与编辑ADOTAble的数据集相同。

实例

要查看一些ADOQuery操作,我们将编写一个小示例。让我们创建一个查询,该查询可用于从数据库中的各个表中获取行。要显示数据库中所有表的列表,我们可以使用ADOConnection组件的getTableNames方法。表单的OnCreate事件中的GetTableNames用表名填充组合框,该按钮用于关闭查询并重新创建查询以从拾取的表中检索记录。()事件处理程序应该如下所示:

procedure TForm1.FormCreate(Sender: TObject);begin ADOConnection1.GetTableNames(ComboBox1.Items);end;procedure TForm1.Button1Click(Sender: TObject);var tblname : string;beginif ComboBox1.ItemIndex then Exit;tblname := ComboBox1.Items[ComboBox1.ItemIndex];with ADOQuery1 do begin Close; SQL.Text := 'SELECT * FROM ' + tblname; Open;end;end;

请注意,所有这些都可以通过使用ADOTable及其TableName属性来完成。

  • 发表于 2021-10-17 00:23
  • 阅读 ( 133 )
  • 分类:数学

你可能感兴趣的文章

用delphi创建、解析和操作xml文档

...提供了此错误消息的解决方案。 Delphi对TXMLDocument组件的实现(默认情况下使用MicrosoftXML解析器)不提供添加“ntDocType”(TNodeType类型)节点的方法。本文提供了这个问题的解决方案。 详细介绍xml XML@w3cpe在W3C站点上提供完整...

  • 发布于 2021-09-06 15:05
  • 阅读 ( 166 )

了解delphi编程的基础知识

...协同工作。 DelphiIDE(代码编辑器)帮助您有效地从方法实现和方法声明中跳转,使用工具提示符号洞察功能定位变量声明,等等。

  • 发布于 2021-09-06 15:13
  • 阅读 ( 185 )

程序退出时delphi中的内存泄漏通知

自Delphi 2006以来的所有Delphi版本都有一个更新的内存管理器,该管理器速度更快,功能更丰富。 “新”内存管理器最出色的功能之一是允许应用程序注册(和注销)预期内存泄漏,并在程序关闭时报告意外内存泄漏。 使用De...

  • 发布于 2021-09-06 15:15
  • 阅读 ( 168 )

delphi中的sql

...形式,允许您选择、插入、更新、查找数据位置等。 delphi中的tquery 如果要在应用程序中使用SQL,您将非常熟悉TQuery组件。Delphi使您的应用程序能够通过TQuery组件直接使用SQL语法来访问Paradox和dBase表(使用本地SQL—ANSI标准SQL...

  • 发布于 2021-09-08 10:40
  • 阅读 ( 189 )

德尔福单元剖析(德尔福初学者版)

...果您打算成为一名优秀的Delphi程序员,那么“接口”、“实现”和“使用”等词需要在您的编程知识中占有特殊的位置。 德尔福项目 当我们创建一个Delphi应用程序时,我们可以从一个空白项目、一个现有项目或Delphi的一个...

  • 发布于 2021-09-10 20:53
  • 阅读 ( 181 )

如何自定义dbnavigator(customize the dbnavigator)

... 此查询来自一位正在寻找增强DBNavigator组件功能的方法的Delphi开发人员。 DBNavigator是一个很好的组件,它提供了一个类似VCR的界面,用于在数据库应用程序中导航数据和管理记录。记录导航由第一个、下一个、上一个和最后一...

  • 发布于 2021-09-10 22:21
  • 阅读 ( 220 )

如何delphidbgrid中的multiselect(multiselect in the delphi dbgrid)

Delphi的DBGrid是数据库相关应用程序中使用最广泛的DB感知组件之一。它的主要目的是使应用程序的用户能够在表格网格中操作数据集中的记录。 DBGrid组件的一个鲜为人知的特性是,可以将其设置为允许多行选择。这意味着用...

  • 发布于 2021-09-10 22:29
  • 阅读 ( 191 )

如何delphidbgrid中的记录排序(sort records in delphi dbgrid)

Delphi DBGrid是一个功能强大的组件,如果您正在开发数据感知应用程序,那么您可能每天都在使用它。下面,我们将了解如何向您的数据库应用程序中添加更多用户肯定会喜欢的功能。 按照《Delphi数据库编程初学者指南》中描...

  • 发布于 2021-09-10 22:31
  • 阅读 ( 235 )

用delphi编写网络感知应用程序

...加,因此您将知道是哪个客户端发送了信息。在更复杂的实现中,已知IP地址的别名可以作为替代。 对于使用这些组件的更复杂的项目,请浏览Delphi>演示>互联网>聊天项目。它是一个简单的网络聊天应用程...

  • 发布于 2021-09-10 23:39
  • 阅读 ( 199 )

用delphi和ado编辑excel表格

...簿交换原始数据。ADO连接不能用于工作表格式化或将公式实现到单元格。但是,如果将数据传输到预先格式化的工作表,则会保留该格式。将应用程序中的数据插入Excel后,可以使用工作表中的(预先录制的)宏执行任何条件格...

  • 发布于 2021-09-11 00:21
  • 阅读 ( 243 )
pgbusho14im
pgbusho14im

0 篇文章

相关推荐