SQL SERVER上面的程序迁移到ORACLE!本来以为只是简单的数据库切换,没想到遇到这么多麻烦!希望诸位程序员不吝赐教,帮我渡过难关!
问题一共四个(开发环境为DELPHI+ORACLE9I):
1、用ADOCONNECTION连接ORACLE数据库,测试连接成功,用ADOTABLE连接时却连不
上并报错“数据提供程序或其他服务返回 E_FAIL 状态”,如何解决?
(该问题在网上也搜过,有很多人问但均无满意答复)
2、软件做完之后是否必须要在客户机上安装ORACLE客户端,如何避免?
3、与ORACLE数据库的连接是用数据库名称+密码来实现的,能否用IP+密码来实现
?如何实现?
4、如何在程序中实现数据表的动态创建及动态编辑?
(最关键看来是第一个问题,急啊)

解决方案 »

  1.   

    1 理论上没有任何问题。请确认:1.1 Adoconnection的连接字符串要“保存密码”,且不使用logon prompt;1.2 adotable的connection要指向该adoconnection;1.3 adotable的tablename要指定。2 必须安装客户端,并且配置服务名。3 不能,因为一个oracle服务器可以有多个服务。而且这些信息其实是在网络服务名配置中指定的。4 表的动态创建容易.create table就可以实现了。动态编辑就需要自己做界面,使用alter table来实现了。
      

  2.   

    给你个例子:两套连接方式都是成功的
    uses
      SysUtils, Classes, DB, DBClient, ADODB, Provider, MidasLib, ComCtrls,
      OraProvider, MemDS, DBAccess, Ora;type
      TdbMain = class(TDataModule)
        cnMain: TADOConnection;
        qryMain: TADOQuery;
        dspMain: TDataSetProvider;
        cdsMain: TClientDataSet;
        SessionMain: TOraSession;
        qryOraMain: TOraQuery;
        dspOraMain: TOraProvider;
        cdsMain1: TClientDataSet;
        procedure DataModuleCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }  end;
    var
      dbMain: TdbMain;implementationuses
      untPublic;{$R *.dfm}
                     
    const
      {oracle}
        ConnectStr='Provider=MSDAORA.1;Password=%s;User ID=%s;Data Source=%s;Persist Security Info=False';procedure TdbMain.DataModuleCreate(Sender: TObject);
    begin
      if ((_sConnectType = '') or (_sConnectType = '0'))  then
      begin
        if (SessionMain.Connected) then SessionMain.Connected := False;
        SessionMain.Username := _sDbUser;
        SessionMain.Password := _sDbPsw;
        SessionMain.Server := _sDbServer;
        SessionMain.Connect;
        _bDBConnect := True;
      end
      else
      begin
        if cnMain.Connected then cnMain.Connected :=False;
        cnMain.ConnectionString := Format(ConnectStr,[_sDbPsw,_sDbUser,_sDbServer]);
        cnMain.Connected := True;
        _bDBConnect := True;
      end;
    end;
      

  3.   

    SQL SERVER上面的程序迁移到ORACLE!本来以为只是简单的数据库切换,没想到遇到这么多麻烦!希望诸位程序员不吝赐教,帮我渡过难关!
    问题一共四个(开发环境为DELPHI+ORACLE9I):
    1、用ADOCONNECTION连接ORACLE数据库,测试连接成功,用ADOTABLE连接时却连不
    上并报错“数据提供程序或其他服务返回 E_FAIL 状态”,如何解决?
    (该问题在网上也搜过,有很多人问但均无满意答复)不要用adotable对oracle进行操作,改adodataset,用commandtext方式
    2、软件做完之后是否必须要在客户机上安装ORACLE客户端,如何避免?
    如果采用ado,或odbc,这是无法避免的,3、与ORACLE数据库的连接是用数据库名称+密码来实现的,能否用IP+密码来实现
    ?如何实现?这个是没有意义的事情,因为oracle需要client的,只需在客户层配置一下服务器就可以了!4、如何在程序中实现数据表的动态创建及动态编辑?
    (最关键看来是第一个问题,急啊)数据表的动态create和动态编辑,只是SQL,完全可以!
      

  4.   

    PS:我已经从事delphi+oracle开发已经3年了,一直用ado和dbexpress方式,
      

  5.   

    使用odac控件,不用安装客户端,使用方法和ado一样
      

  6.   

    1、我没试过ADOTable连接ORACLE,但是感觉Ado连接ORACLE速度比较慢,建议用ODAC这套控件,具体用法不难,跟ADO,BDE差不多
      
    2、用ODAC就可以避免在客户机上安装ORACLE客户端3、用ODAC可以两种方式连接数据库的
       gw_delphi(从容) 给你留了例子,你可以参照着做
    4、   这个问题没有大看明白,如果是动态创建来临时使用的表,用ODAC提供的虚拟表是一个不错的选择
      

  7.   

    使用ODAC好些,经典连接Oracle控件。
      

  8.   

    改用ODAC。我今天剛用這個東西做了一個軟件。如果不用ODAC。要連接Oracle數據庫的話,最好用BDE