CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

SQL的问题,请教!

楼主VHDLcn(我存在,我奋斗!)2003-11-03 22:38:31 在 Delphi / VCL组件开发及应用 提问

程序中  
  ADOQuery1.SQL.add('SELECT   *   FROM   AddressList   WHERE   Name='+strName);  
   
  出现“参数   徐某某   没有默认值”的错误。  
   
  但是使用  
  ADOQuery1.SQL.Add('SELECT   *   FROM   AddressList   WHERE   Name=''徐某某''');  
  就没有问题!!!  
   
  大家看看,是为什么???语句有写错了吗? 问题点数:30、回复次数:17Top

1 楼h_hx(魔兽世界)回复于 2003-11-03 22:59:01 得分 4

这句当然有问题拉!  
  'SELECT   *   FROM   AddressList   WHERE   Name='+strName  
  strName='we';的时候SQL语句就是“'SELECT   *   FROM   AddressList   WHERE   Name=we”  
  去运行的时候更本没有"we"这个变量啊,当然要出错拉。  
  'SELECT   *   FROM   AddressList   WHERE   Name=''徐某某'''  
  转化成SQL后就是  
  SELECT   *   FROM   AddressList   WHERE   Name='徐某某'  
  SELECT   *   FROM   AddressList   WHERE   Name=徐某某  
  你自己看看有什么区别!  
  要改成:  
  ADOQuery1.SQL.add('SELECT   *   FROM   AddressList   WHERE   Name='''+strName+'''');Top

2 楼NewPrince(Mack狼)回复于 2003-11-03 23:36:03 得分 4

 
  改成   ADOQuery1.SQL.add('SELECT   *   FROM   AddressList   WHERE   Name='+#39+strName+#39);  
  就好了  
  Top

3 楼sailer_shi(孤独的我,孤单的走,孤单的活着,孤单呀)回复于 2003-11-03 23:37:54 得分 2

你的strname得值要用#39+'徐某某'+#39得到  
  你为什么不直接用参数呢?  
  adoquery1.sql.add(''SELECT   *   FROM   AddressList   WHERE   Name=:strName');  
  PARAMETERS.PARAMBYNAME('STRNAME').value   :=   '徐某某';  
  就可以了Top

4 楼oklida(JAVA战士)回复于 2003-11-03 23:38:51 得分 2

ADOQuery1.SQL.add('SELECT   *   FROM   AddressList   WHERE   Name='''+strName+'''');Top

5 楼sailer_shi(孤独的我,孤单的走,孤单的活着,孤单呀)回复于 2003-11-03 23:42:23 得分 2

或者你把你的语句改为  
  ADOQuery1.SQL.add('SELECT   *   FROM   AddressList   WHERE   Name='+QuotedStr(strName));Top

6 楼angelface(§<@#$&^%$>§)回复于 2003-11-04 08:26:46 得分 2

肯定是会出问题的,   最好还是用sailer_shi(笨笨虫)的第一个方法,,   用参数的办法!Top

7 楼IORILI(眼镜)回复于 2003-11-04 08:30:05 得分 2

h_hx()   sailer_shi(笨笨虫)都可以,以前我主要用第一种,现在我会用第二种Top

8 楼wrydao(一刀)回复于 2003-11-04 08:33:20 得分 0

ADOQuery1.SQL.add('SELECT   *   FROM   AddressList   WHERE   Name='''+strName+'''');  
  Top

9 楼txmjs(天地之间)回复于 2003-11-04 08:44:37 得分 2

用楼上的这种方法,一定会通过的.Top

10 楼kejian(御剑飞仙)回复于 2003-11-04 09:01:34 得分 2

他们都说光了.       :   )Top

11 楼lf43(小飞侠)回复于 2003-11-04 09:03:30 得分 2

adoquery1.sql.add(''SELECT   *   FROM   AddressList   WHERE   Name=:strName');  
  PARAMETERS.PARAMBYNAME('STRNAME').value   :=   '徐某某';  
  Top

12 楼pingo888(逸风)回复于 2003-11-04 09:05:20 得分 2

ADOQuery1.SQL.add('SELECT   *   FROM   AddressList   WHERE   Name='''+strName+'''');Top

13 楼comerliang(天地良心)(性欲被自己倒分倒没了,以后再也不敢倒分了,想倒分的兄弟看看我的下场吧,男人没了性欲真不爽)回复于 2003-11-04 09:06:48 得分 2

来晚了,没的说了!Top

14 楼Wyi23(Wyi)回复于 2003-11-04 09:13:21 得分 0

俺要说的,你们都说光了,服了YOU!Top

15 楼fhuibo(永远深爱一个叫“莎”的好女孩儿)回复于 2003-11-04 09:13:57 得分 2

ADOQuery1.SQL.add('SELECT   *   FROM   AddressList   WHERE   Name='''+strName+'''');Top

16 楼VHDLcn(我存在,我奋斗!)回复于 2003-11-04 09:22:38 得分 0

谢谢,结贴。Top

17 楼VHDLcn(我存在,我奋斗!)回复于 2003-11-04 09:25:08 得分 0

再次谢谢各位!!!  
  以前用的是VB和VC,没有那么麻烦,呵呵。  
   
  csdn结贴真麻烦,大家都很热情,我想把分平均了,还要一个一个输入分值!!!  
  就没有一个按钮点击,把分值平均给各位吗?????Top

相关问题

  • SQL???
  • sql????????????????????
  • sql
  • SQL????
  • sql
  • sQl
  • sql
  • sql
  • sql???
  • SQL????

关键词

  • 语句
  • sql
  • adoquery1
  • strname
  • 徐某某
  • 参数
  • from addresslist
  • 问题
  • 没有
  • add

得分解答快速导航

  • 帖主:VHDLcn
  • h_hx
  • NewPrince
  • sailer_shi
  • oklida
  • sailer_shi
  • angelface
  • IORILI
  • txmjs
  • kejian
  • lf43
  • pingo888
  • comerliang
  • fhuibo

相关链接

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

广告也精彩

反馈

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