我使用的是ado连接,请问怎样才能进行带有参数的sql查询
好象下面的程序
      变量   学号
    begin
          adoquery.close;
          adoquery.sql.clear;
          adoquery.add(select * from 数据表名)
     ade.query.add(where 学生学号:=学号)
  end
我的form上有一个edit1可以输入参数,高手能不能讲解一下,给个示范程序?

解决方案 »

  1.   

    where 学生学号:='''+trim(edit1.text)+'''
      

  2.   

    或加上
    ade.parameters.paramebyname('学号').asstring:=edit1.text;
      

  3.   

    对于SQLDERVER环境
    在设计期,为ADOQUERY参数表中建立参数“学号”备用,
       begin
              adoquery.close;
              adoquery.sql.clear;
              adoquery.add('select * from 数据表名');//引号!!!
         ade.query.add('where 学生学号=:学号;');//冒号的位置!!!,分号结束!!!
      end
      
      

  4.   

    执行查询事件代码:
    beign
      adoquery.close;
      adoquery.parameters.paramebyname('学号').asstring:=edit1.text;
      adoquery.open;
    end;
      

  5.   

    如果把查询写成一个单独的过程来进行调用的话,就把edit框的值直接代入sql 语句,如果是其它的情况,可以用参数的方式。
      

  6.   

    adoquery.close;
    adoquery.sql.clear;
    adoquery.add(select * from 数据表名);
    adoquery.add(where 学生学号=:学号 and 成绩=:成绩 );
    adoquery.paramerters[0].values:=edit1.text;
    adoquery.paramerters[1].values:=strtofloat(edit2.text);
    adoquery.open;
    例举两例,表示一下!
      

  7.   

    if query1.active then query1.close;
    query1.sql.clear;
    query1.sql.add('select * from table where id=:id');
    query1.parambyname('id').asstring=edit1.text;
    query1.open;
      

  8.   

    adoquery.close;
    adoquery.sql.clear;
    adoquery.add('select * from 数据表名');
    adoquery.add('where 学生学号=:学号 and 成绩=:成绩' );
    adoquery.paramerters[0].values:=edit1.text;
    adoquery.paramerters[1].values:=strtofloat(edit2.text);
    adoquery.open;
    这参数的方法。
    但还有一种是串接的:
    Var
     str:String;adoquery.close;
    adoquery.sql.clear;
    str:='select * from 数据表名';
    str:=str+'where 学生学号='''+Edit1.Text+''' and 成绩='''+Edit2.Text+''''; 
    adoquery.add(str);
    adoquery.open;
      

  9.   

    楼上的 ADOQUERY的参数好象不能这样写吧
    我觉得  nmqhzh(昨夜风) 的对
      

  10.   

    呵呵谢谢你们,但是怎样在 query的参数表中建立参数呢?
      

  11.   

    不用自己建立的,以:params格式就可以让query自己辨认
      

  12.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
            adoquery1.close;
            adoquery1.sql.clear;
            adoquery1.sql.add('select * from 学生信息记录表');
            adoquery1.sql.add('where 学生学号=:学号');
            adoquery1.Parameters[0].value:=edit1.text;
            adoquery1.open;end;我这样做,语法检查没有错误,程序开始执行是,就有错误提示,说第一行''附近有语法错误,有谁知道的提示一下
      

  13.   

    '''+Edit1.Text+''' and 成绩='''+Edit2.Text+''''请问为什么用了三个引号而后面用了四个引号,谢谢!!!!
      

  14.   

    query1.parambyname('id').asstring=edit1.text;
    为什么我的parambyname('id')没有asstring的属性?
      

  15.   

    '' 是sql中的, 而'是delphi中的,合在一起不就是 '''' 四个了!
      

  16.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
            adoquery1.close;
            adoquery1.sql.clear;
            adoquery1.sql.add('select * from 学生信息记录表');
            adoquery1.sql.add('where 学生学号=:学号');
            adoquery1.Parameters[0].value:=edit1.text;
            adoquery1.open;end;我这样做,语法检查没有错误,程序开始执行是,就有错误提示,说第一行''附近有语法错误,有谁知道的提示一下
      

  17.   

    xytyge(没有恋爱过)说的是正确的,我曾经那么做过!完全可以实现!
      

  18.   

    你的代码出错是因为你的两个sql语句之间没有空格adoquery1.sql.add('select * from 学生信息记录表');
    adoquery1.sql.add('where 学生学号=:学号');//where 前面应该空格,或者在上一句后面空格你再试一下,另外,我觉得数据表名和列名都最好不要用中文