CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

關於TQuery的問題,非高手不要進

楼主PlayFort()2003-09-03 23:32:05 在 Delphi / VCL组件开发及应用 提问

請問下面兩种方法究竟有甚麼差別(請注意實際上一定有差別)  
  有一個表tab,fields(idno   string   key,  
                                              name   string);  
  我想通過idno找到name   方法有兩種:  
  已知idno   為sstr   已知的字串  
  1   :with   query1   do    
        begin    
            Close;  
            Sql.Clear;  
            Sql.Add(   '   select   *   from   tab1   where   idno   =:idno   ');  
            parambyname('idno').asstring   :=sstr;  
            open;  
        end;  
  2   :1   :with   query1   do    
        begin    
            Close;  
            Sql.Clear;  
            Sql.Add(   '   select   *   from   tab1   where   idno   '+''''+sstr+'''');  
            open;  
        end;  
  這兩種方法有時會返回結果不同請高手結我原因  
  问题点数:0、回复次数:7Top

1 楼yzf111(好累)回复于 2003-09-03 23:37:47 得分 0

2   :1   :with   query1   do    
        ....  
            Sql.Add(   '   select   *   from   tab1   where   idno='''+sstr+'''');  
        ...  
        end;  
  还有就是最好trim(sstr)  
  Top

2 楼yzf111(好累)回复于 2003-09-03 23:38:40 得分 0

应该是没有差别的Top

3 楼ychuiming(飞天)回复于 2003-09-03 23:45:34 得分 0

select   *   from   tab1   where   idno   '+''''+sstr+''''  
  应为  
  'select   *   from   tab1   where   idno   '''+sstr+''''Top

4 楼madyak(无天)回复于 2003-09-04 00:51:49 得分 0

第一种方法适用于固定的查询,整个SQL语句是固定不变的,通过参数来实现要查询目的  
  通常结合     if   Not   Query1.Prepared   then  
                          Query1.Prepare;结构来提高执行效率;确实能提高运行速度;  
   
  第二种方法适用于组合查询,整个SQL语句是经常变化的尤其是where..条件部分.条件由用户在哪些文本框中输入了内容决定。不适用与  
  if   Not   Query1.Prepared   then  
                        Query1.Prepare;结合,执行效率要低些。  
   
  如果前者不用Query1.Prepare二者效率应该是一样的。  
   
   
  不应该返回不同的结果集,第二个例子少写了个等号,如果有问题多检查SQL语句  
  Top

5 楼Piao40993470(ミ飘ミ)回复于 2003-09-04 01:12:54 得分 0

应该没什么差别的。。((关键还是要看你最后生成的SQL语句的真实值,,((机器是不会骗人的,但人经常被自己所骗。Top

6 楼zjqyb(风清扬*任它溺水三千,我只取一瓢饮*)回复于 2003-09-04 07:03:20 得分 0

如果是paradoz,access,foxpro的数据量很大的情况下  
  1的速度比2慢很多,但结果是一样的  
  Top

7 楼coffieblue(常量)回复于 2003-09-04 08:04:17 得分 0

你使用的何种数据库  
  string   在   不同数据库   会有不同的技术实现  
  有时   会有不必要的空格也被存储  
   
  使用trim来规范取出的结果  
  或者在数据库设计中   使用   动态域   例如sqlserver中的varcharTop

相关问题

  • 有关TQuery的一个非常奇怪的问题
  • TQuery的问题
  • Tquery 问题
  • Tquery and DBgrid 问题
  • Tquery 的问题
  • TQuery问题
  • TQuery问题
  • 用 Tquery 还是 Ttable??
  • 动态创建TQuery
  • 请教TQuery用法?

关键词

  • 语句
  • sql
  • idno
  • sstr
  • prepare
  • query
  • 方法
  • 效率
  • 不同
  • 结果

得分解答快速导航

  • 帖主:PlayFort

相关链接

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

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo