ODBC数据库引擎是系统自带的,使用它就不用安装Oracle客户端了,
不过我没有试过,仅供参考。

解决方案 »

  1.   

    表用ODBC,很慢的说,.NET不是提供了Oracle访问的类了吗,直接访问就是了
      

  2.   

    两位看来都没有试过,无论ODBC还是System.Data.OracleClient,安装Oracle Net*Clinet都是先决条件
      

  3.   

    你是说安装oracle client,这个问题是没法解决的,你必须安装他才能与oracle server连接,他是server和app的一个桥梁。
    不象sql server,ms已经集成了。
      

  4.   

    BCB中有ODAC控件,可直接通过TCP/IP访问Oracle,.Net中不知道有没有?另外使用WebService的话只需在Web Server上装Oracle client,不用为每个WinForm宿主安装Oracle Client,但速度慢了很多,约1:7使用Remoting不知情况如何,希望有经验的指点一下
      

  5.   

    I'm sorry,确实没有试过
    不过...你的问题和Remoting有什么关系?
      

  6.   

    找到Oracle客户端所需的核心的大约26个DLL,将其拷入你的目标机器;在目标机器的注册表中建立\Software\Oracle的项,并添加$Oracle_home
    的键值。试几次,应该可以的。
      

  7.   

    你用Remoting,就可以不用每个客户端都安装oracle client
    但需要在作为Remoting Host的那台服务器上需要安装oracle client.
      

  8.   

    还有:
        如果不需要经过防火墙,最好用Remoting,速度,性能都比Web Service要好.
      

  9.   

    有这个问题处理经验的大侠谈一下在Oracle数据库访问的具体问题中,Remoting封装什么对象更合适,仅仅封装OracleConnect是否可以,该如何作?
      

  10.   

    可以把OracleConnect作为服务端激活对象发布。
    其实你不如单独做一个class封装与数据库的连接。然后每次返回Dataset等等。这样可以比较方便。或者你就把microsoft的SQLHelper改一下,假定为OracleHelper,把所有static去掉。然后发布那个对象就可以了。
    或者再进一步,把SQLHelp每个函数的ConnectString 记录成OracleHelper的属性。在使用前初始化。其他函数只是把static,把connectionstring(或者是一个OracleConnect)改成使用域就可以了MSN:[email protected]
      

  11.   

    我看楼主要是对Romoting不是很了解的话,还是用ODBC把,如果ODBC都不会配,那我佩服你了下面有一些Oracle的连接方式Oracle 
    ODBC 
     New version:
    "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;" 
     Old version:
    "Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;" 
     OLEDB, OleDbConnection (.NET) 
     Standard security:
    "Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;" 
    This one's from Microsoft, the following are from Oracle
     Standard Security:
    "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;" 
     Trusted Connection:
    "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;" 
     OracleConnection (.NET) 
     Standard:
    "Data Source=Oracle8i;Integrated Security=yes"; 
    This one works only with Oracle 8i release 3 or later
     Declare the OracleConnection:C#:
    using System.Data.OracleClient;
    OracleConnection oOracleConn = new OracleConnection();
    oOracleConn.ConnectionString = "my connectionstring";
    oOracleConn.Open(); VB.NET:
    Imports System.Data.OracleClient
    Dim oOracleConn As OracleConnection = New OracleConnection()
    oOracleConn.ConnectionString = "my connectionstring"
    oOracleConn.Open() 
      

  12.   

    BCB中有ODAC控件,可直接通过TCP/IP访问Oracle,.Net中不知道有没有?
    ===================================================================我原来用过bcb,好象没注意这个odac控件,再说oracle client有几十M,这个控件能行吗?
      

  13.   

    服务端:
    TcpChannel chan;
    chan = new TcpChannel(8089);
    ChannelServices.RegisterChannel(chan);
    RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.SingleCall);客户端:
    System.Data.OracleClient.OracleConnection obj = (System.Data.OracleClient.OracleConnection)Activator.GetObject(typeof(System.Data.OracleClient.OracleConnection), "tcp://localhost:8089/SayHello");
    try
    {
      obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";
      string strSql = "select * from tab";
      System.Data.OracleClient.OracleDataAdapter oda = new   System.Data.OracleClient.OracleDataAdapter( strSql, obj );
      System.Data.DataSet ds = new DataSet();
      oda.Fill( ds );
      dataGrid1.DataSource = ds;
    }
    catch( System.Exception ee )
    {
      MessageBox.Show( ee.Message );
    }输出错误提示:The ConnectionString property has not been initialized.如何解?
      

  14.   

    to: junqiang(笨笨) 
    ODAC是一个第三方控件 http://www.crlab.com/
    该公司有一个类似与System.Data.OracleClient的.Net组件,但只能通过OCI访问
      

  15.   

    obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";
     是运行到这句出错吗?
      

  16.   

    to: caozi(浩子) 
    到: oda.Fill( ds );
    obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";没出错,但似乎没有效果
      

  17.   

    我到www.crlab.com上看了一下,他还有个OraDirect .NET组件,这个是不是也可以直接访问Oracle数据库呢
      

  18.   

    是不是你应用了RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.SingleCall);
    它是掉用一次创建一次,obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";完了后它会释放了,
    System.Data.OracleClient.OracleDataAdapter( strSql, obj );
    obj.ConnectionString 这时是一个空值了。
    改为RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.Singleton);试下。
      

  19.   

    看了你的代码,你想把连接(connection)代理过来,这是不可以的,因为他不能跨进程。你可select在服务器做,把dataset传到client。
      

  20.   

    >我到www.crlab.com上看了一下,他还有个OraDirect .NET组件,
    >这个是不是也可以直接访问Oracle数据库呢别提这个了。我用过他针对pg的数据库类。结果,免费版的一次查询最多只能够返回六列。
      

  21.   

    caozi(浩子) :
    WellKnownObjectMode.SingleCall改为WellKnownObjectMode.Singleton
    错误提示如下
    权限被拒绝: 无法远程调用非公共或静态方法。
    想来应该是 junqiang(笨笨) 说的问题genuinekl(genuinekl) :
    该组件类似与System.Data.OracleClient,目前只能通过OCI访问,而且在我简单的测试中都出Bug