为什么我把DELPHI连接SQL数据库以后,table1.delete语句就不能实现了。而用query的话,加人SQL语句,结果删除是可以了,但程序出错,说我是非法操作
这是怎么回事,我现在任务很急,请大家务必帮帮忙。

解决方案 »

  1.   

    我的源程序是这样:
    with database1 dobegin
     database1.Close;
     database1.params.Values['USER NAME']:='tyadmin';
     database1.params.Values['PASSWORD']:='wr8111';
     database1.Open;
     database1.StartTransaction;
     try
     if query1.active then
     begin
     datasource1.dataset:=query1;
     query1.Close;
     query1.SQL.Clear;
     query1.sql.add('delete from exp where 序号='''+trim(edit1.Text)+'''');
     query1.Open;
     end
     else
      begin
      query1.SQL.Clear;
      query1.sql.add('delete from exp where 序号='''+trim(edit1.Text)+'''');
      query1.Open;
    end ;
    database1.commit;
    except
    database1.Rollback;
    end;
    end;错误是这样:error creating cursor handle 
      

  2.   

    还有我用查询是可以成功的,但修改就不行,而且我好象已经把属性设为READ/WRITE了。
      

  3.   

    应该用execsql而不是Open;
    Open仅用于Select
    而Insert, Updete和Delete必须用execsql才能够提交成功
    将query1.Open改为query1.Execsql即可
      

  4.   

    用SQL数据库的话不建议使用Table组件,因为SQL数据库和本地数据库如:Paradox,dBase,Access的数据存贮结构不一样,本地数据库可以在记录间自由的浏览和查找,而SQL数据库采用的是单向浏览记录,查找、更新操作使用SQL语句。由于两者之间的差别,使得原本在本地数据库上可行的方法应用在SQL数据库上时就出问题。对于你的问题你可以使用Borland的dbExPress或ADO要好些。