//Insert:
 with query do
 begin
  close;
  sql.clear;
  sql.add('insert your_table_name (fieldName1,fieldName2,....)');
  sql.add('values(value1,value2,....');
  sqlexec;//不返回结果集
end;
//select:
  with query do
   begin
     close;
     sql.clear;
     sql.add('select * from your_table_Name');
     open;//返回结果集
  end;
 其它 看help

解决方案 »

  1.   

    不好意思更正:
    //Insert:
    with query do
    begin
      close;
      sql.clear;
      sql.add('insert your_table_name (fieldName1,fieldName2,....)');
      sql.add('values(value1,value2,....)');
      execsql;//不返回结果集
    end;ApplyUpdates;当TQuery 的 cachedupdate=true 时 使用 with query do
      begin
       close;
       sql.clear;
       sql.add('select * from your_table_name');
       requestLive:=true;  
       open;
       Insert;// or append;
       fieldbyName('fieldName1').asString:=Value1;// var value1:string;
       fieldbyName('fieldName2').asInteger:=value2;// var value2:integer;
       Post;//存于缓存中
       ApplyUpdates;//真的提交记录到数据库
     end;
      

  2.   

    记着一点,如果该query要返回数据集的话,就是用Open;
    只是执行一系列操作的话,比如插入,删除等等,就是用ExecSql;
      

  3.   

    谢谢各位,可能是我没有说清楚。
    我是想利用Query作记录的插入,并利用它的Cacheupdate来提高效率。它的sql是'insert..'我这样写:
    with Query1 do begin
      Close;
      SQL.Clear;
      SQL.Add('insert ...');
      ExecSQL;
    end;
    我知道这进数据并未送到数据库中,可是ApplyUpdate又如何写?
    直接写在后面,提示:“不是insert 或edit 模式”
    加上insert 又提示“没打开”
    加上Open又出上面的错误。
    请哪位老兄试一下好吗?我把分全给他。谢谢了
      

  4.   

    吧你省下的代码全贴出来把!其他的同意ePong的说话
      

  5.   

    吧你省下的代码全贴出来把!其他的同意ePong的说话
      

  6.   

    关键是我在ExecSQL,ApplyUpdate时出错,“Dataset not in insert or edit mothed”。
    这怎么办?我就是ExecSQL后紧跟着写的ApplyUpdate
      

  7.   

    测试: NT4.0 + SQL Server 7.0 + Delphi5.0 + SQL MonitorApplyUpdates;当TQuery 的 cachedupdate=true 时 用with query do
      begin
      close;
      sql.clear;
      sql.add('select * from your_table_name');
      requestLive:=true;  
      open;
      Insert;// or append;
      fieldbyName('fieldName1').asString:=Value1;// var value1:string;
      fieldbyName('fieldName2').asInteger:=value2;// var value2:integer;
      Post;//存于缓存中
      ApplyUpdates;//真的提交记录到数据库
    end;
    测试通过;
    //*********************************88
    ApplyUpdates;当TQuery 的 cachedupdate=true 
    能用 SQL 语句(insert ......) 插入 但此时数据已经"直接"写到了后台数据库没有缓存如果用缓存 请用本贴的第一方法.已测试 ok;其实 用delphi带的数据库工具  "SQL Monitor" 看一看就明白了