如果我要以编辑框的内容作为参数,该怎么写?
ADOQuery1.SQL.add('selet * from tableName where columnName = '''+ Edit1.Text + '''');
这样对吗?其实就算对我也看不懂,恳请各位高手帮忙,谢谢。
ADOQuery1.SQL.add('selet * from tableName where columnName = '''+ Edit1.Text + '''');
这样对吗?其实就算对我也看不懂,恳请各位高手帮忙,谢谢。
你也可以这么写
ADOQuery1.SQL.add('selet * from tableName where columnName ='+quotedstr(Edit1.Text));
这样看比较清楚
//--字符串中输入了一个单引号字符;
//--如:
var
s:string;
begin
s:='abcd';
s:=s+' '' ';
showmessage(s);
s:='delphi7:'' '+'string test''';
showmessage(s);
s:='';
s:='test3'+' '' '+s+' '' ';
showmessage(s);
end;
ADOQuery1.SQL.add('selet * from tableName where columnName = '''+ Edit1.Text + '''');
columnName 是数值类型:
ADOQuery1.SQL.add('selet * from tableName where columnName = ''+ Edit1.Text + ''');
selet * from tableName where columnName ='Edit1'
'selet * from tableName where columnName = '''+ Edit1.Text + ''''
| | |
| | 这是一个字符串,它的内容是一个单引号,对应Edit1后面的单引号
| 两个单引号,对应输出后的Edit1前面的单引号
第一个引号的结束
'selet * from tableName where columnName = '''+ Edit1.Text + ''''
第一个引号的结束 | | |
两个单引号,对应输出后的Edit1前面的单引号| 这是一个字符串,它的内容是一个单引号,对应Edit1后面的单引号
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('selet * from tableName where columnName = :columnName');
ADOQuery1.Parameters.ParamByName('columnName').Value := Edit1.Text这样不用管columnName 是什么类型,也不用管这个Edit1中的内容 的是不是单引号。如果用楼上的方法,楼主可以试验一下在edit1中输入英文的单引号看是什么结果。
而 Edit1.Text 中包含一个单引号,各位测试一下运行时会不会报错!!!我想提问者是想问这个问题吧,不要拿着一个简单东西说一万遍
'selet * from tableName where columnName = '(第一个引号的结束) ''(两个单引号,对应输出后的Edit1前面的单引号)+ Edit1.Text + ''''( 这是一个字符串,它的内容是一个单引号,对应Edit1后面的单引号)楼主这下该明白了吧
很简单啊.
两种方法;
一、
ADOQuery1.SQL.add('selet * from tableName where columnName = '''+ Edit1.Text + '''');
对啊,就是这样啊.但是只能录入非引导符号的内容。
但是你有可能会是模糊查询,编辑框录入的内容不会是严格匹配的,那就改成这样:
ADOQuery1.SQL.add('selet * from tableName where columnName Like '''% + Edit1.Text + '%''');
二、
用参数
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('selet * from tableName where columnName = :columnName');
ADOQuery1.Parameters.ParamByName('columnName').Value := Edit1.Text
这样模糊查询我还没有试,不敢胡说。
#39是'的键值,这种方法不会太头晕哦!
FSQL := Format(FSQL, [QuotedStr(Edit1.Text)]);
很清爽的阿,
是对的,顺便解释一下单引号'的用法'selet * from tableName where columnName = '(第一个引号的结束) ''(两个单引号,对应输出后的Edit1前面的单引号)+ Edit1.Text + ''''( 这是一个字符串,它的内容是一个单引号,对应Edit1后面的单引号)楼主这下该明白了吧
你的解释是不对的,自相矛盾。
''(两个单引号,对应输出后的Edit1前面的单引号),那么''''为何来理解为两个单引号呢?
正确的解释应该是:
'selet * from tableName where columnName = ''' + Edit1.Text + ''''分解开:
'selet * from tableName where columnName = ''' 最后的三个单引号, 前面连续的两个是Pascal语法中约定的用来表示字符串常数中的一个单引号的,后面的一个是与最左边的单引号共同组成字符串常数两数的语法定界符了。+ '''' 按上面的解释, 第一个和最后一个是字符串常数定界符, 中间的两个是用来表示一个单引号。