关于SQL查询的问题,请高手指点!!!(30分)

  • 主题发起人 jeff_chen
  • 开始时间
J

jeff_chen

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADO做了个通讯录,我想按照姓名查询,比如在edit1中输入姓名如:张三,按查询按钮
后在dbgrid中出现张三相应的资料,可我不知道该如何写查询语句,我用的是ADOQUERY查询。
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select * from txl');
Prepared;
Open;
end; 这只能出现表中所有的数据,我不知道如何按条件查询,请各位高手指点!
另外:有没有这方面的资料,我手头的太少了,谢谢!!!

我是一只菜菜鸟!!!
 
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select * from txl'+' where 姓名=' + QuotedStr(Edit1.text));
Prepared;
Open;
 
多看看MS SQL的联机帮助。
 
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select * from txl where 姓名=''' + Trim(Edit1.text)+''');
Prepared;
Open;
end;
 
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select * from txl where 姓名=:xm);
SQL.parameter.parametervalues['xm']:=Edit1.text;
Prepared;
Open;
end;
 
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from txl where name=:var_name');
params.ParamByName('var_name').value:=trim(edit1.text);
open
end
 
sql.text:='slelect * from txl where name='''+edit1.text+'''';
open;
 
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from txl ');
sql.add('where name='+#39+edit1.text+#39);
open;
end
 
adodataset1.Filtered:=false;
adodataset1.Filter:='name='+''''+edit1.text+'''';
adodataset1.filtered:=true;
 
to 幸福鸟
呵呵,问你一下吧。为什么在edit.text上要加上3个引号呢
为什sql.text:='slelect * from txl where name='+edit1.text+'';
这样不行啊!!!
谢谢,菜鸟的问题。。。。。
 
with ADOQuery1 do
begin
close;
SQL.text:='select * from txl where 姓名 like '''+Trim(edit1.text)+'''';
Prepared;
Open;
end;
 
高手的回答:
  看书啊!看完书你就什么都会了。
 
to 幸福鸟
呵呵,问你一下吧。为什么在edit.text上要加上3个引号呢
为什sql.text:='slelect * from txl where name='+edit1.text+'';
这样不行啊!!!
谢谢,菜鸟的问题。。。。。
 
Delphi中是用''''表示一个'的哦!''''中第二个'是转义字符的!
也就是说('select * from table where name='猪头'')必须表示成('select * from talbe
where name='+'''+'猪头'+''')才成的哦!
呵呵!
 
最安全
with ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select * from txl where 姓名=''' + Edit1.text+''');
Open;
end;

 
var
QNAME:String;
begin
 QNAME:=Edit1.Text;
with ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select * from winner where NAME=:QNAME'); //NAME 為姓名字段名
ParamByName('QNAME').AsString:=QNAME;
Prepare;
Open;
end;
end;
 
顶部