为什么SQL.ADD('SELECT * FROM TABLE1 WHERE XM="'+EDIT1.TEXT+'"');老是出现invide clum nam

  • 主题发起人 主题发起人 liumingabc
  • 开始时间 开始时间
L

liumingabc

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么SQL.ADD('SELECT * FROM TABLE1 WHERE XM="'+EDIT1.TEXT+'"');老是出现invide clum name的错误提示换成单引号就好了但是为什么别人这样做就可以在MS——SQL环境为后台数据库。(50分)<br />liumingabc@sina.com
 
sql应该用单引号呀
例如:select * from table1 where xm='aaa'
 
to:Brave
&gt;&gt;SQL.ADD('SELECT * FROM TABLE1 WHERE XM="'+EDIT1.TEXT+'"');
这种方式是行的,因为我就是这样做的,DELPHI6.0 + 中文版 SQL 2000。
但是liumingabc为什么不行,我却不知道,我也想知道为什么???
LISTION。
 
你把他改成
SQL.ADD('SELECT * FROM TABLE1 WHERE XM='#39+EDIT1.TEXT+#39);
看一下吧.
 
XM字段确定是字符串类型吗
 
决对行:
SQL.ADD('SELECT * FROM TABLE1 WHERE XM='''+EDIT1.TEXT+'''');
全部是单引号
 
根据数据库类型决定的,有些数据库允许双引号的字符串。
 
to liumingabc:
你是不是用的ADO?
它就是这样,可能是为了对其所支持的不同数据库实现语法的统一,没有什么特别的原因。
所以你只管记住用ADO的话养成用单引号的习惯就行了,虽然在Pacal里有点儿麻烦:)
 
在Delphi中最好用單引號
'select * from table1 where id='+''''+edit1.text+''''
像這樣就不會有問題。
 
你可以这样做
VAR
SQL:STIRNG;
SQL:='select * from table1 where id='+''''+edit1.text+''''
query1.sql.add(sql);
就搞定了,这样用还方便调试,没有问题的
 
好像用BDE连接的话就可以用双引号,用ADO的话就要用单引号了,干脆来个替换得了,也不费事。
 
BDE 可以用双引号,
ADO 只能用单引号.
 
SQL.ADD('SELECT * FROM TABLE1 WHERE XM='''+EDIT1.TEXT+'''');
应该没问题得。
 
都说是无效的列名了,肯定是双引号的问题,改为单引号吧。
 
呵呵,奇怪,偶使用ADO时一直都用双引号呀,也没见出什么问题嘛[:)]
 
有什么大惊小怪的,你就用单引号就行了。
VAR
tempStr:STIRNG;
//id是字符型。
tempStr := 'select * from table1 where id='''+edit1.text+''''
//ID是数字型
tempStr := 'select * from table1 where id='+edit1.text
query1.sql.add(tempStr);
这样便于调试
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
785
import
I
D
回复
0
查看
859
DelphiTeacher的专栏
D
I
回复
0
查看
791
import
I
后退
顶部