CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

模糊查询(请高手帮忙!)

楼主wuxiaojie2006(啊木)2005-03-12 22:39:44 在 Delphi / 数据库相关 提问

我要实现一个查询语句,例如select   *   from   person   where   name   like   %王%.其中,name是一个tedit的text值,而王也是一个tedit的text值,请高手指点!谢谢,在线等。。。。 问题点数:20、回复次数:14Top

1 楼S.F.(chinasf.cnblogs.com)回复于 2005-03-12 22:57:51 得分 2

with   Query   do  
  begin  
      Close;  
      SQL.Text   :=   'Select   *   from   person   where   :f1   like   :f2';  
      ParamByName('f1').asstring   :=   edit1.text;  
      ParambyName('f2').asstring   :=   '%'   +   edit2.text   +   '%';  
      Open;  
  end;Top

2 楼xluzhong(Ralph)回复于 2005-03-12 22:58:06 得分 2

'select   *   from   person   where   '+tedit.text+'   like   '+'%'+''''+tedit.text+''''+'%';Top

3 楼xiaofeng3385(爱情老是缺货,轮也不会轮到我)回复于 2005-03-13 00:05:40 得分 4

var  
      sqlstr:string;  
  begin  
    sqlstr:='select   *   from   person   where   name   like   '''+'%'+edit1.text+'%'+''';  
   
    query1.close;  
    query1.sql.clear;  
    query1.sql.add(sqlstr);  
    query1.open;  
   
  end;Top

4 楼xiaofeng3385(爱情老是缺货,轮也不会轮到我)回复于 2005-03-13 00:07:51 得分 0

少个     'Top

5 楼wuxiaojie2006(啊木)回复于 2005-03-13 01:03:12 得分 0

我也感觉这样写是对的,但是为什么明明数据库里有数据,却查不出数据来呢!Top

6 楼saulia(水晶娃娃)回复于 2005-03-14 16:35:04 得分 2

select   *   from   '''+tedit.Text+'''   where   name   like   ''%'+edit1.Text+'%''Top

7 楼xilinpiaoxue001(猪八戒)回复于 2005-03-14 19:07:41 得分 2

sql.text:='select   *   from   person   where   name   like   '+'%'+#39+trim(edit.text)+#39+'%';  
  其中#39代表引号。  
  出事了喊我。Top

8 楼xiaoyaozgc()回复于 2005-03-15 22:31:42 得分 4

sql.text:='select   *   from   person   where   '+QuotedStr(tedit.text)+'   like   '+  
  QuotedStr('%'+trim(edit.text)+'%');Top

9 楼OYGX(好好学习 Day day up on)回复于 2005-03-15 23:23:44 得分 1

upTop

10 楼chogo(尘埃落定)回复于 2005-03-16 02:02:17 得分 1

支持   S.F.(吃青春饭的)   。  
  虽然看上去程序多了点,但是结构清晰。  
  当然,对于SQL非常熟的就另当别论了:)Top

11 楼xjp6688(大平/要做必须最好)回复于 2005-03-16 06:53:35 得分 0

seleADOQuery1->SQL->Add("select   *   from   sales   where   title_id   like   '%"+Edit1->Text+"%'");Top

12 楼xjp6688(大平/要做必须最好)回复于 2005-03-16 06:54:00 得分 1

ADOQuery1->SQL->Add("select   *   from   sales   where   title_id   like   '%"+Edit1->Text+"%'");  
  这个Top

13 楼sfwany()回复于 2005-03-16 16:19:52 得分 1

ADOQuery1.Close;  
  ADOQuery1.SQL.Clear;  
  ADOQuery1.SQL.Add(format('select   *   from   person   where   name   like   ''%s''',[   '%'+TEdit.Text+'%']));  
  ADOQuery1.Open;Top

14 楼S.F.(chinasf.cnblogs.com)回复于 2005-03-20 19:12:52 得分 0

with   Query   do  
  begin  
      Close;  
      SQL.Text   :=   'Select   *   from   person   where   :f1   like   :f2';  
      ParamByName('f1').asstring   :=   edit1.text;  
      ParambyName('f2').asstring   :=   '%'   +   edit2.text   +   '%';  
      Open;  
  end;  
   
  要知道为什么要这么写吗?用参数的形式赋值可以避免sql   漏洞;因为单引号的问题;如果知道什么叫做   SQL   注入漏洞的同志就应该明白我说的意思。delphi的parambyname的形式可以自动处理单引号;如果要用字符串+++的形式,那么必须用替换函数将值内的单引号全部替换为双个,否则sql出错.Top

相关问题

  • 模糊查询
  • 模糊查询
  • 请问如何asp的模糊查询?
  • sql模糊查询语句,当查询到“[”或“]”时出现错误,请教了~
  • 请问如何进行数据库模糊查询?
  • 请问PB能否实际模糊查询
  • 请问如何在sql中实现模糊查询?(急,给分!)
  • 请教一下SQL中模糊查询的问题:
  • 请教关于模糊查询的问题
  • 请教PHP+MYSQL模糊查询的问题

关键词

  • sql
  • tedit
  • parambyname
  • 单引号
  • adoquery
  • edit
  • asstring
  • sqlstr
  • query
  • from person where

得分解答快速导航

  • 帖主:wuxiaojie2006
  • S.F.
  • xluzhong
  • xiaofeng3385
  • saulia
  • xilinpiaoxue001
  • xiaoyaozgc
  • OYGX
  • chogo
  • xjp6688
  • sfwany

相关链接

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

广告也精彩

反馈

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