知识大全 SQL编程(一)[3]
Posted 部件
篇首语:三百六十行,行行出状元。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL编程(一)[3]相关的知识,希望对你有一定的参考价值。
DELPHI基础教程:SQL编程(一)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
使用Visual Query Builder编写
客户/服务器版本的Delphi还包含一个可视化的查询构造器Visual Query Builder 用这个可视化的工具我们只能编写Select语句 在应用程序窗体中选择TQuery部件后 单击鼠标右键 弹出一个弹出式菜单 从中选择Run Visual Query Builder后便会弹出一对话框提示你选择要访问的数据库 选择想要访问的数据库之后选择OK按钮 紧接着会出现一个弹出式对话框提示你选择要查询的数据库表 一次可以选择多个数据库表 若要选择多个数据库表 每选择一个表之后单击Add按钮 接着选择另一个表 选择完要查询的表之后单击Close按钮 这样 可视化的查询构造器中将会显示出用户选择的数据库表
有关如何使用可视化的查询构造器Visual Query Builder 请参看联机帮助信息 在Visual Query Builder中构造完一个查询并退出Visual Query Builder时 其中的SQL 命令语句会自动地写入相应的TQuery部件的SQL属性
SQL程序的执行
在为TQuery部件设置完SQL属性的属性值之后 也即编写好适当的SQL程序之后 可以有多种方式来执行SQL程序
在设计过程中 设置完TQuery部件的SQL属性之后将其Active属性的值置为True 这样便可以执行SQL属性中的SQL程序 如果应用中有与TQuery部件相连的数据浏览部件( 如TDDGrid TDBEdit等)那么在这些数据浏览部件中会显示SQL程序的执行结果
在应用程序运行过程中 通过程序调用TQuery部件的Open方法或ExecSQL 方法可以执行其SQL属性中的SQL程序 Open方法和ExecSQL方法是不一样的 大家在程序设计过程中一定要注意 Open方法只能用来执行SQL语言的查询语句(Select命令) 并返回一个查询结果集 而ExecSQL方法还可以用来执行其它常用的SQL语句(如Insert UPDATE DELETE等命令)例如
Query Open (这样会返回一个查询结果集)
如果调用Open方法 而没有查询结果时 会出错 此时应该调用ExecSQL 方法来代替Open方法 如
Query ExecSQL (没有返回结果)
当然在设计应用程序时 程序设计人员是无法确定TQuery部件中的SQL 语句是否会返回一个查询结果的 对于这种情况应当用Try…Except模块来设计程序 在 Try 部分调用Open方法 而在Except部分调用ExceSQL方法 这样才能保证程序的正确运行
例如
Try
Query Open
Except
Query ExecSQL
End
在应用程序中使用TQuery部件时 还可以设置它的UniDirectional属性为True 这样会加快检索数据库表的速度 但是这样只能往一个方向移动记录指针 在缺省情况下 UniDirectional属性的值为False
通过TQuery部件如何获得活动的数据
我们在前面的章节里介绍TTable部件时 我们知道通过TTable部件从数据库中获得的数据都是活动的 也就是说用户可以直接通过数据浏览部件对这些数据进行编辑修改 而通过TQuery部件可以获得两种类型的数据
● 活动 的数据
这种数据就跟通过TTable部件获得的数据一样 用户可以通过数据浏览部件来编辑修改这些数据 并且当调用Post方法或当焦点离开当前的数据浏览部件时 用户对数据的修改自动地被写回到数据库中 详细情况请参看第四章 数据浏览部件的应用及编程
● 非活动的数据(只读数据)
用户通过数据浏览部件是不能修改其中的数据 在缺省情况下 通过TQuery部件获得的查询结果数据是只读数据 要想获得 活动 的数据 在应用程序中必须要设置TQuery部件的RequestLive属性值为True 然而并不是在任何情况下(通过设置RequestLive的属值True)都可以获得 活动 的数据的 要想获得 活动 的数据 除了将TQuery部件的RequestLive属性为True外 BDE要能够返回 活动 的数据 相应的SQL命令语句还要满足附录C中的语法规则和下列的约束条件
TQuery部件获得 活动 的查询结果数据的约束条件
当查询Paradox或dBASE数据库中的表
● 查询只能涉及到一个单独的表
● SQL语句中不能包含ORDER BY命令
● SQL语句中不能含聚集运算符SUM或AVG
● 在Select后的字段列表中不能有计算字段
● 在Select语句WHERE部分只能包含字段值与常量的比较运算 这些比较运算符是 Like > < >= <= 各比较运算之间可以有并和交运算 AND和OR
当通过SQL语句查询数据库服务器中的数据库表
● 查询只能涉及到一个单独的表
● SQL语句中不能包含ORDER BY命令
● SQL语句中不能含聚集运算符SUM或AVG运算
另外 如果是查询Sybase数据库中的表 那么被查询的表中只能有一个索引
如果在应用程序中要求TQuery部件返回一个 活动 的查询结果数据集 但是SQL 命令语句不满足上述约束条件时 对于本地数据库的SQL查询 BDE只能返回只读的数据集 对于数据库服务器中的SQL查询 只能返回错误的代码 当TQuery 部件返回一个 活动 的查询结果数据集时 它的CanModify属性的值会被设置成True
表 TQuery部件返回查询结果数据的类型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
RequestLive属性值 CanModify属性值 查询结果的类型
────────────────────────────────
False False 只读数据
True(SQL语句满足约束条件) True 活动 数据
True(SQL语句不满足约束条件) False 只读数据
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
当TQuery部件返回只读的查询结果数据集 而用户又希望修改这只读的数据集时 一般这样来处理 在应用程序中另外增加一个 TQuery 部件 Query ( 假设获得只读结果的TQuery部件的名字是Query ) 在Query 中设置修改语句UpDATE对Query 中的数据进行修改操作 这样会实现对只读数据的修改
动态SQL语句的编程
在 节中 我们已经介绍了动态SQL语句(又被称为参数化的SQL语句) 在其中包含在程序过程中可以变化的参数 在实际的程序设计中使用得更多的是动态SQL语句 因而在这一节里我们重点介绍如何给动态SQL语句的参数赋值 以在应用程序中灵活地使用SQL语句 动态SQL语句的编写 执行等等与 节中介绍的SQL语句的编写 执行是一样的
动态SQL语句中的参数 我们可以通过两种途径来为它赋值
cha138/Article/program/Delphi/201311/25146相关参考
SQL编程(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQL语言作为关系数
DELPHI基础教程:SQL编程(一)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 利用
DELPHI基础教程:SQL编程(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 静态
DELPHI基础教程:SQL编程(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQ
DELPHI基础教程:SQL编程(二)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第十
DELPHI基础教程:SQL编程(二)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! be
DELPHI基础教程:SQL编程(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Ta
Oracle数据库编程动态SQL 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 动态SQL 编
VisualC#的SQLServer编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 初始
SQLServer存储过程编程经验技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! MS SQ