刚学数据库,想编一个小程序,
希望达到这个目的:用了一个edit,在其内输入一个数据库的相应编号,然后单击button1,在dbgrid1显示相应的纪录,我用了query
procedure TForm1.Button1Click(Sender: TObject);
begin
query1.SQL.Clear;
query1.SQL.Add('select * from 表1 where 编号=:s') ;
query1.Prepare;
query1.ParamByName('s').AsInteger:=strtoint(edit1.Text);
query1.ExecSQL;
end;但是却不行,单击后,想要的纪录出不来
也许我的概念认识的有问题,还望大家帮帮我,在线等待,再次道谢了

解决方案 »

  1.   

    try this:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    query1.SQL.Clear;
    query1.SQL.Add('select * from 表1 where 编号=:s') ;
    query1.Prepare;
    query1.ParamByName('s').AsInteger:=strtoint(edit1.Text);
    query1.Open;
    end;
      

  2.   

    >>query1.ExecSQL;
    是不带回显结果的操作
    >>query1.Open;
    是带回显结果的操作
      

  3.   

    执行能返回结果集的语句用Open,如select;
    执行不返回结果集的语句用execsql,如update
      

  4.   

    使用open或active设为true用于返回结果集的操作
    execSQL用于不返回结果集的操作(insert,delete...)
      

  5.   

    query1.ExecSQL;
    是不带回显结果的操作
    query1.Open;
    是带回显结果的操作
      

  6.   

    SQL语句中带有SELECT的。一般用TDataSet。open;
    SQL语句中没有select的。一般用TDataSet。ExecSQL;
      

  7.   

    SQL语句中带有SELECT的。一般用TDataSet。open;
    SQL语句中没有select的。一般用TDataSet。ExecSQL;
      

  8.   

    大家都好像忘了这么一句话:
              query1.Close;
    然后才
              Query1.Sql.Clear;
              ......
      

  9.   

    对数据库表操作时用ExecSQl
    而对表查看后用open
    但用查询时注意光标的问题一般是
    Query.First;
    with Query do
      close;
      SQl.Clear;
      SQl.add('');
      Open;
    end;
      

  10.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    query1.Close;//add!
    query1.SQL.Clear;
    query1.SQL.Add('select * from 表1 where 编号=:s') ;
    query1.Prepare;
    query1.ParamByName('s').AsInteger:=strtoint(edit1.Text);
    query1.Open;//modified!
    end;
      

  11.   

    去联合兴邦看看吧!(lx)http://www.qdcombine.com
      

  12.   

    讲得的正确。
    我补充一下
    如果频繁读一张表。
    在每次打开以后可以用FETCHALL方法可能防止表死锁!