首页建站quotedstr(Delphi中QuotedStr())

quotedstr(Delphi中QuotedStr())

编程之家2024-02-17103次浏览

一、如何delphi中SQL避免非法字符,单引号’三种方法

使用 QuotedStr函数 QuotedStr的作用是使字符串包含单引号:

quotedstr(Delphi中QuotedStr())

在字符的前后加上(‘)号,因为在DELPHI中字符赋值是需要引号的

例如:

CommandText:= CommandText+ QuotedStr(Edit1.Text); Sql:=‘select… from… where uName=’+ QuotedStr(Edit1.Text);

上面的语句还可以写成:

Sql:=‘select… from… where uName=’+ Char(39)+ stringreplace(Edit1.Text,””,”””,[rfReplaceAll])+ Char(39);

Char(39)代码一个分号 stringreplace把字符串中的单引号换成两个单引号,只是还是QuotedStr好用,前后加了单引号而且把见到的单引号都替换成两个单引号了;

quotedstr(Delphi中QuotedStr())

二、请问delphi中这种in查询怎么实现

几个错误:

1、‘北京’,'上海'中的北京前后的引号你都打错了,弄成中文的了,应该是英文的'北京','上海'

2、其实你最终只是要拼成in('value1','value2')这种格式,所以你看一下就就知道了,如果你输入的是'北京','上海'

你的sql就需要改成这样才行

SQL.Add('select* from table_name where trim(城市) in('+Trim(edit1.Text)+')')

3、其它的就不用说了,如果你是想直接输入北京,上海或者北京上海这种就能查出结果,就需要自己转换了,转换的过程一般是这样

quotedstr(Delphi中QuotedStr())

var

str:string;

List: TStringList;

i:integer;

begin

str:='';

List:= TStringList.Create;

ExtractStrings([';',',',':',''],['#',''],PChar(Edit1.Text),List);

执行之后,这个list中放的就是单个的北京或者上海,你自己循环一下,加上单引号就可以了。

三、如何实现delphi多条件查询

根据你的条件,我做了一下:

edit1:学号, edit2:职务, edit3:籍贯,edit4:面貌.与你的条件有些出入的地方是:我添加了一个radiogroup控件来让用户选择,是按学号查询还是按其他类别查询.

当选择按学号查询时,其它按钮不可用;按其它查询,edit1不可用(这个你自己可以设置是否可用.)如果edit2等中有内容即被当作查询条件,如果为空则不作查询条件.

代码大致如下:

//控制按钮是否可用:

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

case radiogroup1.ItemIndex of

0:

begin

radiobutton1.Enabled:= false;

radiobutton2.Enabled:= false;

datetimepicker1.Enabled:= false;

datetimepicker2.Enabled:= false;

edit2.Enabled:= false;

edit3.Enabled:= false;

edit4.Enabled:= false;

end;

1:

begin

edit1.Enabled:= false;

radiobutton1.Enabled:= true;

radiobutton2.Enabled:= true;

datetimepicker1.Enabled:= true;

datetimepicker2.Enabled:= true;

edit2.Enabled:= true;

edit3.Enabled:= true;

edit4.Enabled:= true;

end;

end;

查询按钮

procedure TForm1.Button1Click(Sender: TObject);

var

sql, v_sex: string;

begin

if radiogroup1.ItemIndex= 0 then//按学号查询

begin

with adoquery1 do

begin

close;

sql.Clear;

sql.Add('select* from students where num='''+ trim(edit1.Text)+'''');

open;

end;

end

else

begin

sql:='select* from students where';

if trim(edit2.Text)<>'' then

sql:= sql+'duty='+ Ansiquotedstr(edit2.Text,#39);

if trim(edit3.Text)<>'' then

begin

if trim(edit2.Text)='' then

sql:= sql+'nation='+ Ansiquotedstr(edit3.Text,#39)

else

sql:= sql+'and nation='+ Ansiquotedstr(edit3.Text,#39);

end;

if trim(edit4.Text)<>'' then

begin

if(trim(edit2.Text)='') and(trim(edit3.Text)='') then

sql:= sql+'mianmao='+ Ansiquotedstr(edit4.Text,#39)

else if(trim(edit2.Text)<>'') or(trim(edit3.Text)<>'') then

sql:= sql+'and mianmao='+ Ansiquotedstr(edit4.Text,#39);

end;

if radiobutton1.Checked then

begin

v_sex:= radiobutton1.Caption;

if(trim(edit2.Text)='') and(trim(edit3.Text)='') and(trim(edit4.Text)='') then

sql:= sql+'sex='+ Ansiquotedstr(radiobutton1.Caption,#39)

else if(trim(edit2.Text)<>'') or(trim(edit3.Text)<>'') or(trim(edit4.Text)<>'') then

sql:= sql+'and sex='+ Ansiquotedstr(radiobutton1.Caption,#39);

end;

if radiobutton2.Checked then

begin

v_sex:= radiobutton2.Caption;

if(trim(edit2.Text)='') and(trim(edit3.Text)='') and(trim(edit4.Text)='') then

sql:= sql+'sex='+ Ansiquotedstr(radiobutton2.Caption,#39)

else if(trim(edit2.Text)<>'') or(trim(edit3.Text)<>'') or(trim(edit4.Text)<>'') then

sql:= sql+'and sex='+ Ansiquotedstr(radiobutton2.Caption,#39);

end;

if(trim(edit2.Text)='') and(trim(edit3.Text)='') and(trim(edit4.Text)='') and(v_sex='') then//如果edit控件全为空,就显示所有记录,这里可以自己设置.

sql:='select* from students';

adoquery1.Close;

adoquery1.SQL.Clear;

adoquery1.SQL.Append(sql);

adoquery1.Open;

end;

这里我没有实现日期查询,因为还不知道..(很少使用ACCESS,惭愧..)

ps序列号cs5(Adobe Photoshop CS5 key 注册码序列号)源代码 在线(13个源代码网站)