问一个ADOQUERY1.SQL.ADD ()中括号的问题啊……(100分)

  • 主题发起人 主题发起人 hearty
  • 开始时间 开始时间
H

hearty

Unregistered / Unconfirmed
GUEST, unregistred user!
有时是 add ('1') ;
有时用 add (''''+edit1.text+''',') ;
什么时候是一个括号?什么时候是不用括号?什么时候是两个什么时候是三个啊?为什么这个样用?
我好晕这个,哪位高人能给我说清楚点啊。
 
你是指括号还是引号?看你的意思应该是指引号!
pascal中引号中的引号要用两个引号来表示!
''''四个引号中间的两个引号其实是表示一个引号
当一个字符串比如 'a' 如果再把它放入引号就是
'''a''' 也可写成 '''' + 'a' + '''' (也就是把前面和后面的两个引号单独用引号括起来)
------------------------
一般在写SQL的时候如果要查询条件是一个字符串,就要这样写
1.'select * from table1';
2.'select * from table1 where str1 = ''' + Edti1.Text + '''';
3.'select * from table1 where str1 = '+ '''' + Edti1.Text + '''';
1中没有用到引号中的引号
2和3是一样的!
 
抱歉,是引号。
 
使用QuotedStr吧,也许会简单一点。其实一个引号需要写两个遇到边框要多加一个。
 
两个' 代表一个'
 
如果是字符串类型的话,就要用引号了,在delphi中,如果引号出现在字符串中的话,连续的
两个引号才算作是一个引号,所以麻烦就来了,其实你可以用quotestr这个函数,此函数会
会给字符串的两边加上引号,并且字符串内部的引号也进行处理,具体的方法你看看帮助
 
用quotestr吧,简单。
 
pascal中引号中的引号要用两个引号来表示!
''''四个引号中间的两个引号其实是表示一个引号
当一个字符串比如 'a' 如果再把它放入引号就是
'''a''' 也可写成 '''' + 'a' + '''' (也就是把前面和后面的两个引号单独用引号括起来)
------------------------
一般在写SQL的时候如果要查询条件是一个字符串,就要这样写
1.'select * from table1';
2.'select * from table1 where str1 = ''' + Edti1.Text + '''';
3.'select * from table1 where str1 = '+ '''' + Edti1.Text + '''';
1中没有用到引号中的引号
2和3是一样的!
 
那那个加号的用法呢?
 
(这里的加号就是将两个字符串加起来)
例: str1 := 'a'
str2 := 'b'
str3 := str1 + str2 + 'c';
这样str3就是'abc'了
(还不给分?Zz...)
-----------
'select * from table1 where str1 = ''' + Edti1.Text ''''
你硬要分两行写成这样也行!
Query1.Add('select * from table1 where str1 = ');
Query1.Add('''' + Edit2.Text + '''');
-------------------
这总看明白了吧!
 
如果不能有效区分,使用参数方式会更容易理解
 
我来说一说:
' 号作为字符串的前后标示,如果想在字符串中使用这个符号,则不能简单的写成一个 ' ,
那怎么办呢? 这就需要在这个字符前面加上两个 '' 进行转意,也就要写成 ''' ,
这就是告诉编译器在字符串中有一个 ' 字符。
你加入到SQL属性中的很明显是一个字符串,如 select * from tablename where field1='a'
其中field1字段为字符型,所以要用'a'与其比较。也就是说这个加入到SQL中的字符串需要
用到两个 ',依照上面的说法,就要写成:
'select * from tablename where field1='''a'''' ;
其中第一个和最后一个不用再说了,另外有两个 ''' 则代表在字符串中有两个 ' 。
说了这么多,不知道你明白了吗?呵呵,再仔细看看吧。

建议使用变量参数代入,不要使用这种方法。

 
多谢大家。
 
多人接受答案了。
 
后退
顶部