3
Imports System.Data.OleDb

Public Class Log

    Private mConnectionString As String = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx)(PORT=1521)))(CONNECT_DATA=(SID=xxx)(SERVER=DEDICATED)));User Id=xxx;Password=xxx;"
    Dim ds As New DataSet
    Dim da As New OleDbDataAdapter
    Dim dr As DataRow
    Dim Connection As New OleDbConnection(mConnectionString)
    Dim Command As OleDbCommand
    goes on...

这就是代码,它在我们的开发机器上运行良好。我们的机器上都安装了 Oracle 提供程序。现在我尝试在另一台没有安装 Oracle 软件的机器上的应用程序中使用此代码,但它不起作用。

现在我知道我可以在这些其他机器上安装 Oracle 提供程序并且它会工作。问题是 A)他们很多,B)我必须通过我们的 IT 部门,他们需要六个月的时间才能完成。所以我的问题是,我可以从没有安装 Oracle 提供程序的机器连接到这个 Oracle 数据库吗?我以为微软有自己的 Oracle 提供商,但它没有出现在 System.Data 下。如果有帮助,.NET 版本是 3.5。有任何想法吗?

4

4 回答 4

6

我对Oracle Instant ClientODP.NET的运气相当好,这几乎是直接的 XCOPY 部署(如果您不需要 ODBC)。

IIRC,您确实需要修改 PATH 环境变量,但这相对容易——尤其是与 Oracle 用来让您跳过的箍相比。

于 2008-12-12T21:07:01.600 回答
1

问题实际上是您在没有与公司的 IT/DBA 团队讨论基础架构需求的情况下启动了一个项目。这不是技术问题,而是工艺问题。

这里所说的是一个可能的解决方案(尽管我没有亲自使用过)。 http://devart.com/dotconnect/oracle/

于 2008-12-12T21:04:04.760 回答
0

我很确定您必须安装 Oracle 提供程序才能使其正常工作。OleDb 可以轻松连接到 SQL Server 和 Access 等,但这仅仅是因为这些提供程序预装在 Windows 中。

我认为您唯一的选择(除了在每台机器上安装 Oracle 提供程序)是创建一个 SQL Server“前端”数据库,其中包括您需要的每个 Oracle 表的传递表,然后从 SQL Server 而不是 Oracle 获取数据.

实际上,另一种选择是让您的客户端应用程序从中间 Web 服务获取数据,而不是直接连接到数据库,但这可能需要进行重大重写。

于 2008-12-12T20:58:48.980 回答
0

是否可以在您的应用程序中找到并包含 Oracle DLL 而不是安装它们?

于 2008-12-12T21:01:27.400 回答