在Delphi中动态地使用SQL查询语句 Adoquery sql 参数 冒号
在Delphi中动态地使用SQL查询语句
在一般的数据库管理系统中,通常都需要应用SQL查询语句来提高程序的动态
特性。下面介绍如何在Delphi中实现这种功能。
在Delphi中,使用SQL查询语句的途径是:在窗体中置入TQuery构件,设置其
SQL属性的内容值,此内容为一个字符串数组,数组的每个值对应一行SQL查询语句。
可以在程序设计过程中事先指定,也可以在程序运行中重新赋值,即可以实现动态
地改变程序中的查询语句。假定程序的窗体中有一个名为Query1的TQuery构件,在
程序运行过程中需要改变它的SQL查询语句内容,则可以引用以下程序行。
Query1.close;
{先关闭以前查询的连接}
Query1.SQL.Clear;
{清除以前的查询语句}
Query1.SQL.Add('select * from mytable');
{增加新的查询语句内容为select * from mytable}
Query1.Prepare;
{发送查询到Borland Database Engine (BDE)}
Query1.open;
{建立新的查询语句的数据库连接}
在Delphi中,要灵活地使用SQL查询语句,还需要使用TQuery构件的Params特性,
即在查询语句中使用参数。Delphi中的SQL语句如需参数,则在参数名称前使用一个
冒号':'来作为标识。例如:'select * from mytable where id_no=:p'一句,其中
p为参数,可以在程序运行过程进行在赋值。在程序运行期动态地创建带参数的SQL
查询语句较为复杂,其过程如下:
Query1.close;
{先关闭以前查询的连接}
Query1.SQL.Clear;
{清除以前的查询语句}
Query1.Params.Clear;
{清除以前查询语句的参数}
Query1.Params.CreateParam(ftString, 'p',ptInput);
{创建新的查询语句的参数p}
Query1.SQL.Add('select * from title1 where NO_GLOBE=:p');
{增加新的查询语句内容为select * from title1 where NO_GLOBE=:p}
{其中p为新建的参数}
Query1.ParamByName('p').asstring:= '1';
{给新的参数赋值为'1'}
Query1.Prepare;
{发送查询到Borland Database Engine (BDE)}
Query1.open;
{建立新的查询语句的数据库连接}
以上两个示例中,SQL查询语句都是SELECT语句,而当SQL语句是UPDATE或INSERT、DELETE时,其中的Query1.Open需要改为Query1.ExecSQL。
4、动态SQL应用实例介绍
下面给出一个完成动态SQL查询、批记录移动的数据库程序。程序从数据库my_database的表TITLE_L.DBF中选取符合要求日期的记录,并批量移动到同一个数据库的表my_table.dbf中。
{指定所要连接的数据库别名}
Database1.AliasName:='MYDATABASE';
Database1.DatabaseName:=my_database;
Database1.connected :=True;
{指定目标表是Table1}
Table1.DatabaseName:= ' my_database';
Table1.TableName:= ' my_table.dbf';
Table1.Active:=True;
{指定源数据的内容对应查询Query1}
Query1.DatabaseName:= ' my_database';
Query1.close;
{程序运行时动态添加SQL查询语句}
Query1.SQL.Clear;
Query1.Params.Clear;
Query1.Params.CreateParam(ftInteger, 'update',ptInput);
Query1.Params.CreateParam(ftInteger, 'dndate',ptInput);
Query1.SQL.Add('SELECT* FROM TITLE_L');
Query1.SQL.Add('where LET_DATE<=:update');
Query1.SQL.Add('AND LET_DATE>:dndate');
Query1.SQL.Add('ORDER BY NO_LOCAL');
Query1.Prepare;
Query1.Params[0].asInteger:=Up_Date;
Query1.Params[1].asInteger:=Down_Date;
Query1.open;
Query1.Active:=True;
{用DBGrid1来显示将要移动的记录}
DataSource1.DataSet:= Query1;
DBGrid1.DataSource:= DataSource1;
{进行批量记录移动}
BatchMove1.Mode:=batAppend;
BatchMove1.RecordCount:=0
BatchMove1.Source:=Query1;
BatchMove1.Destination:=Table1;
BatchMove1.Execute;
在Delphi中动态地使用SQL查询语句 Adoquery sql 参数 冒号的更多相关文章
- android之Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
由于考虑到数据库的安全性,不被轻易SQL注入,执行查询语句时,一般不使用直接拼接的语句,而是使用参数传递的方法.然后在使用参数传递的方法中时,发现当使用like方式查询数据时,很容易出现一个问题. 错 ...
- 转: 从Mysql某一表中随机读取n条数据的SQL查询语句
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
- oracle中sql查询语句的执行顺序
查询语句的处理过程主要包含3个阶段:编译.执行.提取数据(sql查询语句的处理主要是由用户进程和服务器进程完成的,其他进程辅助配合) 一.编译parse 在进行编译时服务器进程会将sql语句的正文放入 ...
- 从Mysql某一表中随机读取n条数据的SQL查询语句
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
- Delphi中动态创建窗体有四种方式
Delphi中动态创建窗体有四种方式,最好的方式如下: 比如在第一个窗体中调用每二个,主为第一个,第二个设为动态创建 Uses Unit2; //引用单元文件 procedure TForm1.But ...
- EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ; EF5执行sql查询语句 Database.SqlQuery 带返回值
一: 执行sql语句,返回受影响的行数 在mysql里面,如果没有影响,那么返回行数为 -1 ,sqlserver 里面 还没有测试过 using (var ctx = new MyDbConte ...
- SQL查询语句大全集锦
SQL查询语句大全集锦 一. 简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的 表或视图.以及搜索条件等. 例如,下面的语句查询t ...
- (转)经典SQL查询语句大全
(转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...
- 经典SQL查询语句大全
一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...
随机推荐
- Ajax的跨域请求——JSONP的使用
一.什么叫跨域 域当然是别的服务器 (说白点就是去别服务器上取东西) 只要协议.域名.端口有任何一个不同,都被当作是不同的域. 总而言之,同源策略规定,浏览器的ajax只能访问跟它的HTML页面同源( ...
- MyDC总结
需要补全的代码如下 public int evaluate(String expr) { int op1, op2, result = 0; String token; StringTokenizer ...
- 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告
实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...
- C语言 结构体学习
结构体的学习 struct 结构是由基本数据类型构成的.并用一个标识符来命名的各种变量的组合. 结构中可以使用不同的数据类型. 结构说明和结构变量定义 在Turbo C中, 结构也是一种数据类型,可以 ...
- 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait
20155305<信息安全系统设计基础>10月18日课堂 fork,exic,wait fork()函数 1.fork函数作用 一般来讲, 我们编写1个普通的c程序, 运行这个程序直到程序 ...
- # 20155337 《Android程序设计》实验四实验报告
20155337 <Android程序设计>实验四实验报告 实验一 实验内容 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPU ...
- P,NP,NPC的通俗解释
这或许是众多OIer最大的误区之一. 你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜了,这已经被证明是NP问题 了”之类的话.你要知道,大多数人此时所说的NP问题其实都是指的N ...
- centos7下将java -jar命令运行一个项目做成systemd服务
有些时候运行一个java项目在linux下通过一条简单的java命令即可,如: #nohup java -jar jenkins.war & ###这里为后台运行jenkins 在此背景下,j ...
- CF833E Caramel Clouds
题面 天上有$n$朵云,每朵云$i$会在时间$[l_i,r_i]$出现,你有$\text C$个糖果,你可以花费$c_i$个糖果让云$i$消失,同时需要保证你最多让两朵云消失.现在有$m$个独立的询问 ...
- 【JUC源码解析】PriorityBlockingQueue
简介 基于数据结构堆实现的线程安全的无界队列,这个堆的内存结构是数组,结合了数组和二叉树的特点. 堆 以下内容参考<编程珠玑>和<算法导论>有关堆的章节. 数据结构 堆是用来表 ...