动态SQL语句的编程

动态SQL语句中的参数,我们可以通过两种途径来为它赋值:

1.利用参数编辑器(Parameter Editor)来为参数赋值

具体方法是:选中TQuery部件,单击鼠标右键,然后从中选择Define Parameters便可以打开参数编辑器。

例如,在TQuery部件的SQL属性中我们设置如下的SQL语句:

Setect * From Customer Where CustNO=:Number;

TQuery的DatabaseName属性为DBDEMOS,其中Number为参数变量。我们便可以为参数Number赋值,在Datetype组合框中选择该参数的数据类型为整数Integer,在Value编辑框中可以为参数Number赋一个值,也可以单击Null Value检查框为参数Number赋一个空值Null。给参数赋值之后,单击OK按钮,这样TQuery部件中的SQL 查询便准备好了,而且参数值也被赋给了动态SQL语句中相应的参数,此时当把TQuery 部件的Active属性设置成True时,在与TQuery部件相连的数据浏览部件中会显示出查询结果,通过参数编辑器为参数赋值,这种方式缺乏应有的灵活性,在实际应用中用得较少,在实际应用中程序设计人员希望用更灵活方便的方式为参数赋值,那就是我们接下来要介绍的另一种途径:

2.在运行过程中,通过程序为参数赋值

用这种方式为参数赋值有三种方法:

①根据参数在SQL语句中出现的顺序,设置TQuery部件的Params属性值为参数赋值。

②直接根据SQL语句中各参数的名字,调用ParamByName方法来为各参数赋值。

③将TQuery部件的DataSource属性设置为另一个数据源,这样将另一个数据源中与当前TQuery部件的SQL语句中的参数名相匹配的字段值赋给其对应的参数。

这三种方法我们将在下面的三小节中具体地介绍

17.4.1 使用Params属性为参数赋值

TQuery部件具有一个Params属性,它们在设计时不可用,在程序运行过程中可用,并且是动态建立的,当为TQuery部件编写动态SQL 语句时, Delphi 会自动地建立一个数组Params,数组Params是以0下标开始的,依次对应动态SQL 语句中的参数, 也就是说动态SQL语句中第一个参数对应Params[0],第二个参数对应params[1],依此类推。

例如:一个TQuery部件Query1,我们为它编写的动态SQL语句是:

Insert Into Customer(CustNo,Name,Country)

Values(:CustNo,:Name, : Country)

对于上述这条动态SQL语句中的参数,我们可以利用TQuery部件的params 属性为参数赋值:

Query1.params[0].AsString := "1988";

Query1.params[1].AsString := "Lichtenstein";

Query1.params[2].AsString := "USA";

上述语句将把"1988"赋给参数:Cuse_No,"Lichtenstein"赋给参数:Name,"USA"赋给参数:Country。

时间: 2024-09-09 10:05:29

动态SQL语句的编程的相关文章

通过非动态SQL语句在SQL Server中执行动态查询

问题: 我尝试在一个存储过程中传递一系列以逗号划定界限的值,以限制结果集.但是无论什么时候,我在 IN子句中使用变量,都会得到错误信息.是否存在一种不执行动态SQL语句也能完成查询的方式呢? 专家解答: 这里存在一种不执行动态SQL语句也能完成查询的方式,但是首先让我们来探究这个问题.我将在以下 例子中运用AdventureWorks数据库. 在你只有一个值的时候,执行将不会有什么问题. Declare @ManagerIDs Varchar(100) Set @ManagerIDs = '3'

jdbc 动态sql语句拼接 查询不出结果

问题描述 jdbc 动态sql语句拼接 查询不出结果 public List queryByCondition(String command String description) { // message列表 List messageList = new ArrayList(); try { // 加载驱动 Class.forName(""com.mysql.jdbc.Driver""); // 数据库的连接 Connection conn; conn = Dri

三、动态SQL语句

 三.动态SQL语句 2013-09-06 17:06:55 标签:Oracle 配置文件 sql语句 insert mysql语法 MyBatis学习 之 一.MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 之 二.SQL语句映射文件(1)resultMap MyBatis学习 之 二.SQL语句映射文件(2)增删改查.参数.缓存 MyBatis学习 之 三.动态SQL语句 MyBatis学习 之 四.MyBatis配置文件       有些时候,sql语

Oracle基础 动态SQL语句

原文:Oracle基础 动态SQL语句 一.静态SQL和动态SQL的概念. 1.静态SQL 静态SQL是我们常用的使用SQL语句的方式,就是编写PL/SQL时,SQL语句已经编写好了.因为静态SQL是在编写程序时就确定了,我们只能使用SQL中的DML和事务控制语句,但是DDL语句,以及会话控制语句却不能再PL/SQL中直接使用,如动态创建表或者某个不确定的操作时,这就需要动态SQL来实现. 2.动态SQL 动态SQL是指在PL/SQL编译时SQL语句是不确定的,如根据用户输入的参数的不同来执行不

动态sql语句-求助!!这个动态SQL语句怎么写???

问题描述 求助!!这个动态SQL语句怎么写??? getHibernateTemplate().find("from Bookinfo where bookname=key"; 其中bookname和key都是jsp页面传过来的值,依据情况是不固定的,请问该怎么写这个动态SQL语句? 解决方案 可以将 from Bookinfo where bookname=key作为单独的string,在放入find之前Bookinfo=request.getP() ,然后放入find 里面.或者类

MySQL存储过程中实现执行动态SQL语句的方法_Mysql

本文实例讲述了MySQL存储过程中实现执行动态SQL语句的方法.分享给大家供大家参考.具体实现方法如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE set_col_value -> (in_table VARCHAR(128), -> in_column VARCHAR(128), -> in_new_value VARCHAR(1000), -> in_where VARCHAR(4

MyBatis 执行动态 SQL语句详解_java

大家基本上都知道如何使用 MyBatis 执行任意 SQL,使用方法很简单,例如在一个 XXMapper.xml 中: <select id="executeSql" resultType="map"> ${_parameter} </select> 你可以如下调用: sqlSession.selectList("executeSql", "select * from sysuser where enabled

MySQL 存储过程中执行动态SQL语句的方法_Mysql

drop PROCEDURE if exists my_procedure; create PROCEDURE my_procedure() BEGIN declare my_sqll varchar(500); set my_sqll='select * from aa_list'; set @ms=my_sqll; PREPARE s1 from @ms; EXECUTE s1; deallocate prepare s1; end; 以上是小编为您精心准备的的内容,在的博客.问答.公众号.

在存储过程中执行动态sql语句,能否提高性能

问题描述 原本在后台写的sql语句很复杂,属于多表连接操作,现在把它放在了存储过程里用动态sqlexec执行,能否提高性能呢 解决方案 解决方案二:1.可以减轻程序负担,把这些工作都交给DBMS2.程序维护起来更加简单3.仅是个人观点解决方案三:存储过程执行动态sql语句时结尾exec(@sql)和execsp_executesql@sql有何区别解决方案四:差不多的,要提高用存储过程好了解决方案五:但是参数是要动态的,必须用动态SQL