query.insert;
query.fieldbyname('id').asstring:=1;
...
----------------------------
query.close;
query.sql.clear;
query.sql.add('insert into ....');
query.exesql;------------------------
|                      |
|   相逢何必曾相识     |
|                      |
------------------------

解决方案 »

  1.   

    这和你的事务管理有关系,建议你在做insert,update,delete操作时候
            Try        //.开始事务
            Database1.StartTransaction;        with Query1 do
            begin
                ......//.自定义
                ExecSql;
            end;
            
            //.提交事务
            Database1.Commit;        On E:Exception do
              //.事务回滚
              Database1.Rollback;
      

  2.   

    好像弄错了我的意思,我是query.insert,时就提示错误了.
    在sql server数据库是可以的.
      

  3.   

    报query只读.
    这是不应该的,不知是不是oracle有什么特别.
    因为各属性设置正确,在sql server数据库时均正常操作.
      

  4.   

    oracle没有什么特变的地方。
    我没有遇到过你这样的情况。
    你是使用什么用户连接oracle的呢?我一般都使用dba用户。------------------------
    |                      |
    |   相逢何必曾相识     |
    |                      |
    ------------------------
      

  5.   

    我用system,
    在sqlplus中执行正确,可增删数据的.
      

  6.   

    请问jiezhi(西域浪子):
       你用的是数据感知控件方式增删数据的吗??能成功吗??怎么做的???
       即:query.append;
          query.filedbyname(..)..=..;
          query...;
      而不是:
         ...
         query.sql.add("insert into ..");
         ...
      

  7.   

    我也自己试了一下(delphi6+oracle8.1.7)
    结果和你的错误一样。
    使用table则通过。------------------------
    |                      |
    |   相逢何必曾相识     |
    |                      |
    ------------------------
      

  8.   

    又试了一下:
    设置:
    query.requestlive:=true;
      

  9.   

    我试了该项是可以的。
    我建立的bde是类型是oracle的,不是odbc的。