2012-01-13 94 views
1

我在本地运行Oracle 11g数据库。我有一个小程序通过VC++的OLEDB在代码中连接到它(它只运行一些数据库测试,我确信在进入真实的事物之前我已经掌握了所有的基础知识)。代码中的连接信息仅包括提供者,实例名称,用户名和密码。所有这些方面工作正常。如何设置OLEDB连接到远程数据库?

//For example, both these ways of connecting work: 
result = dataSource.Open(DATABASE_PROVIDER, DATABASE_NAME, 
         DATABASE_USER_NAME, DATABASE_USER_PASSWORD); 

result = dataSource.OpenFromInitializationString(L"Provider=OraOLEDB.OracleDataSource=orcl;User ID=SYSTEM;Password=admin;"); 

我现在想这个程序发送到其他计算机在我的网络,并从那里运行它,连接到我的数据库我的本地机器上。
我该如何去将其他计算机连接到我的数据库,以便代码能够理解?

我一直在试图通过IP本地连接而不是“本地主机”,确定我可以简单地使用相同的代码和客户端。在这方面,我尝试了一些没有成功的事情:
- 我试图修改连接字符串以将“数据源”更改为我的IP,但它无法连接。
- 我曾尝试从其他连接字符串示例中添加一些参数,但它们不适用于Oracle并且被忽略。
- 我也尝试修改tnsnames.ora和listener.ora将本地主机更改为IP地址,但我知道这并不起作用,因为如果我输入垃圾它仍会连接。

任何人都有知识可以帮忙吗?

+0

您正在安装代码的其他计算机是否安装了Oracle客户端?如果是这样,哪个版本(即时客户端,完整客户端等)?这些机器是否有tnsnames.ora条目,指向要连接的任何数据库? – 2012-01-13 22:42:51

+0

他们没有在其他机器上安装过任何东西,但我确实希望安装它们。在这些客户端中修改我的tnsnames.ora会解决我的问题吗?如果是这样,为什么不在本地机器上调用tnsnames.ora在本地更改任何内容? – Paradoxyde 2012-01-14 06:19:28

回答

0

对于Oracle数据库,您应该在各自的机器上设置一个新的tnsnames条目,指向您的本地数据库。然后使用该新的tns名称作为数据源。你还需要确保你的本地数据库实例首先可以被他们访问。 (顺便提一下,这在Oracle Express中默认没有启用。)

我通常也使用msdaora作为数据提供程序而不是OraOLEDB取得了更大的成功。

+0

在这种情况下,使用OraOLEDB不是可选的。另外,我没有使用Express,我使用的是11g企业版,我是否仍然有权设置?感谢您的回复,但有一件事我不明白。如果它使用tnsnames.ora连接,那么如何在本地机器上修改该文件实际上不会阻止我在本地连接?我必须明确告诉它使用它吗? – Paradoxyde 2012-01-14 23:57:12