CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

query的动态sql如何赋值?

楼主wei_wang()2002-04-28 18:46:22 在 Delphi / VCL组件开发及应用 提问

SQL语句是字符串,可以用字符串的方法。    
  如:要从表TempTable中查寻Name字段为Edit1中输入的值的所有记录,可用:    
  StrSQL:='select   *   from   TempTable   while   '+Edit1.Text;    
  Query1.SQL:=StrSQL;    
  Query1.ExecSQL;    
     
  但是,delphi对‘   “单引号、双引号不能区分,如果sql的where条件变量是string型的,形成的sql语句不完整,不知如何解决,例如:    
  ls_date:='2002/04/26'    
  ls_sql:='select   flight_no   from   view_led   where   usedate='+ls_date;    
  则返回的ls_sql值为:    
  'select   flight_no   from   view_led   where   usedate=2002/04/26    
  末尾少一个单引号?    
  请帮忙!!!    
  感激,激,激... 问题点数:20、回复次数:11Top

1 楼wzrlover(无语无声无欲无泪吾独行!)回复于 2002-04-28 18:52:47 得分 0

ls_sql:='select   flight_no   from   view_led   where   usedate=:Is_date'  
  query1.parambyname('Is_date').asstring:=edit1.text;Top

2 楼yjs_lh(长风浪子)回复于 2002-04-28 19:04:35 得分 13

修改成这样:  
   
  StrSQL:='select   *   from   TempTable   where   name   =   '''+Edit1.Text+'''';    
  Query1.SQL.Text:=StrSQL;    
  Query1.Open;  
   
  Delphi中,用两个单引号表示一个引号字符(称为转义符)。Top

3 楼blackfish(一天到晚游泳的鱼)回复于 2002-04-28 19:06:57 得分 0

query1.Active   :=   false;  
    query1.SQL.Clear   ;  
    StrSQL:=   'Select   *   from   book.db   where   usedate=:Is_date'      
    query1.sql.add(StrSQL);  
    query1.paramByName('Is_date').asstring:=edit1.text;  
    query1.Active   :=   True;  
  Top

4 楼gs571(*人称二炮*)回复于 2002-04-28 19:17:57 得分 5

with   query   do  
  begin  
        close;  
        sql.clear;  
        sql.add:='select   *   from   book.db   where'  
                              +'   userdate='+#39+edit.text+#39;  
        open;  
  end;Top

5 楼zhu_jy(coldfish)回复于 2002-04-28 19:25:57 得分 0

'select   *   from   tmp   where   name   =   '+''+Edit1.Text+''Top

6 楼luoshumeng(乡村意外)回复于 2002-04-28 19:29:37 得分 2

上面的老兄说得都很好,不过我觉得用=:(我称之为替换)比较好,替换参数不用定义,这样做起来不就很方便吗?  
  ls_sql:='select   flight_no   from   view_led   where   usedate=:tmp1'  
  query1.parambyname('tmp1').asstring:=edit1.text;Top

7 楼star_of_light(Supper Star)回复于 2002-04-28 19:54:32 得分 0

With   Query1   do  
  begin  
      Close;  
      SQL.Clear;  
      SQL.Add(strSQL);//strSQL为SQL语句  
      Open;  
  end;  
  如果你在SQL语句中使用了参数,别忘了给参数赋值。假设有一个参数为UserName.可以这样给它赋值:  
  Query1.ParamByName('UserName').AsString:=StrValue;//StrValue为字符串Top

8 楼lvloj()回复于 2002-04-28 20:00:43 得分 0

ls_sql:='select   flight_no   from   view_led   where   usedate='+QuotedStr(ls_date);Top

9 楼firetoucher(风焱)回复于 2002-04-28 20:10:13 得分 0

query.sql.add(sqlstring);  
  query.open    
  or    
  query.executeTop

10 楼pusy(pusy)回复于 2002-04-28 20:59:13 得分 0

with   adoquery1   do   begin  
          close;  
          sql.clear;  
          sql.add('select   *   from   score   where');  
          sql.Add(string1+string2+':xue');  
   
          if   (string1='学号')   or   (string1='成绩')   then       begin  
          Parameters.ParamByName('xue').value:=strtofloat(edit1.Text)  
          end  
          else     begin  
                  Parameters.ParamByName('xue').value:=edit1.Text;  
                  end;  
          open;  
  end;Top

11 楼yjian(杨健)回复于 2002-04-28 21:10:43 得分 0

var   qry:TQuery;  
          s:string;  
  ...  
  s:='select   *   from   TempTable   where   name=''%s''';    
  Query.SQL.SetText(PChar(Format(s,[edit1.text])));  
  Query.Open;  
   
  or  
  ...Top

相关问题

  • 动态sql赋值问题
  • Query动态赋值的问题
  • 关于动态给sql语句赋值的ParamByName
  • 动态赋值的问题
  • FastReport动态赋值问题
  • 怎么样动态的把Query查询结果的字段名称赋值给QRDBText1->DataField???
  • 给动态生成变量名赋值!
  • 动态赋值的问题,请进
  • 动态给变量赋值的问题!
  • 如何实现动态赋值?

关键词

  • date
  • view
  • sql
  • query1
  • 单引号
  • strsql
  • temptable
  • flight
  • ls
  • edit1

得分解答快速导航

  • 帖主:wei_wang
  • yjs_lh
  • gs571
  • luoshumeng

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...

社区焦点:

教你怎样用C#搞笑整人
最懒惰的程序员写的Cache
程序员如何掌握专业英语
Java栈与堆
分享:让人懊恼的面试
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo