如何获取网络上可用的Oracle服务器列表使用C#

时间:2016-03-30 17:13:57

标签: c# .net database oracle

如何使用C#列出网络上可用的所有Oracle服务器。我需要获取服务器名称和IP地址。经过一番搜索后发现,对于SqlServer,以下代码将起作用。

SqlDataSourceEnumerator.Instance.GetDataSources();

有没有办法对Oracle做同样的事情?

1 个答案:

答案 0 :(得分:0)

您可能需要Oracle的.Net数据提供商。 Oracle提供了一些在线教程和文档here,以帮助您入门。

下载:Oracle Data Access Components (ODAC) for Windows

示例代码(由Oracle提供):

using System;
using System.Data;
using System.Data.Common;
using Oracle.DataAccess.Client;

class DataSourceEnumSample
{
    static void Main()
    {
        string ProviderName = "Oracle.DataAccess.Client";

        DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);

        if (factory.CanCreateDataSourceEnumerator)
        {
            DbDataSourceEnumerator dsenum = factory.CreateDataSourceEnumerator();
            DataTable dt = dsenum.GetDataSources();

            // Print the first column/row entry in the DataTable
            Console.WriteLine(dt.Columns[0] + " : " + dt.Rows[0][0]);
            Console.WriteLine(dt.Columns[1] + " : " + dt.Rows[0][1]);
            Console.WriteLine(dt.Columns[2] + " : " + dt.Rows[0][2]);
            Console.WriteLine(dt.Columns[3] + " : " + dt.Rows[0][3]);
            Console.WriteLine(dt.Columns[4] + " : " + dt.Rows[0][4]);
        }
        else
            Console.Write("Data source enumeration is not supported by provider");
    }
}

返回的数据表包含:

  • 实例名
  • 服务器名称
  • 的ServiceName
  • 协议
  • 端口

获得服务器名称后,您可以通过Dns.GetHostAddresses(string hostname)找到它的IP。