为什么用odac连接局域网的oracle数据库看不到数据
执行了update语句,但表中的数据无任何改变我用的是OraSession,OraQuery
其中OraSession的 Net := True
分数不是问题

解决方案 »

  1.   

    我用的orasession怎么没有net属性啊。
      

  2.   

    Net为True没有问题,看连接串有没有问题,如schema,sid,prod,
    再看oraSession,oraQuery的AutoCommit是怎么设置的,先做个select看看有没有结果啊.
      

  3.   

        orasession1.Connected := false;;
        orasession1.Server := '192.168.0.1:1521:ora9i';
        orasession1.Username := 'user';
        orasession1.Password := 'password';
        orasession1.AutoCommit := false;
        orasession.Connected := true;
    首先:要双击osrsession将net,detail都打上勾
    其次:看看autocommit的属性是什么,如果是false则需要用事务进行提交,否则需要关闭窗体提交。
    一般时都用autocommit=false,用事务来控制操作。
     orasession1.StartTransaction
      try
        .....
        oraquery1.
        
        orasession1.Commit;
      except
        orasession1.Rollback;
      end;
      

  4.   

    var
      oraSession:TOraSession;
    begin
      oraSession:= TOraSession.Create(Owner);
      oraSession.ConnectString:= Format('%s/%s@%s:1521:%s',['system', 'manager', '127.0.0.1', 'orcl']);
      oraSession.Options.Net:= true;
      try
        oraSession.Connected:=true;
        OraQuery1.Connection:= oraSession;
        with self.OraQuery1 do
        begin
          SQL.Clear;
      //    SQL.Add('create table test(cid number)');
      //    SQL.Add('insert into test values(1)');
            SQL.Add('update test set cid=51');
          ExecSQL;
        end;
      finally
        oraSession.Connected:= false;
        oraSession.Free;
      end;
    end;
    测试没有发现什么问题
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, MemDS, DBAccess, Ora, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      oraSession:TOraSession;
      oraQuery: TOraQuery;
    begin
      oraSession:= TOraSession.Create(Owner);
      oraSession.ConnectString:= Format('%s/%s@%s:1521:%s',['system', 'manager', '127.0.0.1', 'orcl']);
      oraSession.Options.Net:= true;
      oraQuery:= TOraQuery.Create(Owner);
      try
        oraSession.Connected:=true;
        oraQuery.Connection:= oraSession;
        with oraQuery do
        begin
          SQL.Clear;
      //    SQL.Add('create table test(cid number)');
      //    SQL.Add('insert into test values(1)');
            SQL.Add('update test set cid=5122');
          ExecSQL;
        end;
      finally
        oraSession.Connected:= false;
        oraSession.Free;
        oraQuery.Free;
      end;
    end;end.oraSession,oraQuery全部动态创建测试一下,我这里还是没有问题,你的登陆用户什么权限,是DBA么?
      

  6.   

    按月亮写的应该就可以,数据库上没有什么要改的
    我一直用odac连oracle,要不你的代码贴出来大家看看