在delphi远程数据库的客户端中, 编写带有参数的查询知道可以这样写:

  ClientDataset1.close;
  ClientDataset1.CommandText:= 'select * from   ks   where 准考证号 =:zkzh';
  ClientDataset1.Params.ParamByName('zkzh').Value:=edit1.text;
  ClientDataset1.open;而编写带有参数的增加、删除、修改该怎样写呢?请教各位。请给个具体例子。

解决方案 »

  1.   

    增加:
    'insert into t(c1,c2) values(''1'',''2'')'
    删除:
    'delete from  ks  where 准考证号 =:zkzh'
    修改:
    'update ks set 准考证号=''1'' where 准考证号 =:zkzh'______
    问题如果解决请及时结帖
      

  2.   

    同意楼上增加: 
    'insert into t(c1) values('+ quotestr(变量) +')' 
    也可以
      

  3.   

    说明:你的这个结构应该是假三层的,也就是说你使用了做三层里的一些组件,结构也类似三层,但程序是2层的,如果是2层不建议使用ClientDataset控件,可以使用AdoQuery等实现。如果你这样做的话需要设置ClientDataset1连接的DataSetProvider的一些属性。如果你非要这样实现的话,方法就是楼上说的这样!
    有问题可以参加QQ高级群:9642802;
      

  4.   

    与查询差不多
      ClientDataset1.close; 
      ClientDataset1.CommandText:= 'Insert InTo ks Values(:zkzh,'...') where 准考证号 =:zkzh';
      ClientDataset1.Params.ParamByName('zkzh').Value:=edit1.text; 
      ClientDataset1.ExecSQl;  
      

  5.   

    感谢各位,当我写入:
      ClientDataset1.close; 
      ClientDataset1.CommandText:= 'Insert InTo ks Values(准考证号) where 准考证号 =:zkzh'; 
      ClientDataset1.Params.ParamByName('zkzh').Value:=edit1.text; 
      ClientDataset1.ExecSQl; 为何会报错:
    [Error] kh.pas(69): Undeclared identifier: 'ExecSQl'
    [Fatal Error] keProject2.dpr(5): Could not compile used unit 'kh.pas'
      

  6.   

    ClientDataset1.ExecSQl; 
    ---------------------------
    这句是错误的,ClientDataset不会有这样的方法。
      

  7.   

    原来这样,那要返回结果,该怎样写呢?如下,我试了,能删去,但不能返回结果,请帮解释下好吗?
    ClientDataset1.close;
    ClientDataset1.CommandText:='delete from ksf where 准考证号 =:zkzh';
    ClientDataset1.Params.ParamByName('zkzh').Value:=edit1.text;
    ClientDataset1.open;
      

  8.   

    删除(Delete)、更新(Update)的SQL语句都不会返回数据结果。
      

  9.   

    删除(Delete)你需要返回什么结果呢?删除之后的所有数据?
      

  10.   

    刚入门,很多东西需要请教。如我写了下面的语句,
    ClientDataset1.close; 
    ClientDataset1.CommandText:='delete from ksf where 准考证号 =:zkzh'; 
    ClientDataset1.Params.ParamByName('zkzh').Value:=edit1.text; 
    ClientDataset1.open;但出现了错误:Project keProject2.exe raised exception class EOleException with message 'ADOQuery1: CommandText does not return a result set'. Process stopped. Use Step or Run to continue.在query组件中,要执行delete、insert、update 必须调用execsql,不能用open,这里用了ClientDataset1.open;是不是出现错误的原因,但你又说了,ClientDataset.ExecSQl;不会有这样的方法。怪怎办?请给个具体例子好吗?谢谢
      

  11.   

    赶英超美大哥:再补充哦,我是想 删除(Delete)指定的数据后,再显示删除之后的所有数据?
      

  12.   

    delete,update,insert等无返回集的,要用execsql,select用open.ClientDataset1.CommandText:= 'Insert InTo ks Values(准考证号) where 准考证号 =:zkzh'; 
    insert时为什么加where条件,语句是错误的。
      

  13.   


    增加:
    'insert into t(c1,c2) values(:c1,:c2)'
    删除:
    'delete from  ks  where 准考证号 =:zkzh'
    修改:
    'update ks set 准考证号=:z where 准考证号 =:zkzh'全部用Execute
      

  14.   

    凡是用insert\delete \update都应用Execute