Access的查詢字段中本身含有" ' "號,怎么辦?(100分)

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

linan

Unregistered / Unconfirmed
GUEST, unregistred user!
如:
with AdoDataSet1 do begin
Close;
CommandText := 'SELECT * FROM orders WHERE Customer_id=';
CommandText := CommandText + ''''+Edit1.Text+'''';
Open;
end;
這時,如果Edit1.Text 為 " Pana brother's ",這時就出錯了.
 
呵呵!
用成
CommandText := CommandText + '"'+Edit1.Text+'"';

应该可以。
 
用参数方式解决。
 
CommandText := CommandText + QuotedStr(Edit1.Text);
 
其实BeginDelphi的方法已经可以了
也可以这样

adoquery1.Close;
adoquery1.SQL.text:='select * from table1 where name='''+StringReplace(edit1.text,'''','''''',[rfReplaceAll])+'''';
adoquery1.Open;

StringReplace(edit1.text,'''','''''',[rfReplaceAll])
把edit1里的 ' 代替为 ''
 
凡是遇到有‘的问题,建议用#39来代替。要不然’‘’‘’‘你自己看着办吧。
 
有两种方法可以正确处理Edit1.Text " Pana brother's "的情况,如下:
CommandText := CommandText + ' Pana brother''s ';
CommandText := CommandText + " Pana brother's " ;
上述的两种方法都可以处理SQL语句中'号的问题,可以据此考虑如何处理edit1中的字符串。
 
SQL语句里面这样的语句非法
select * from mytable where name='Te'st',即使改为
select * from mytable where name='Te''st'还不对!为什么?因为对于字符类型来说'属于二义性标示符!
居我所知(我们单位可有几个delphi高手),无法解决!所以只能在输入记录时过滤单引号和双引号!
 
多人接受答案了。
 
后退
顶部