WEB开发网
开发学院WEB开发ASP.NET 获取本机上配置好的Oracle服务名 阅读

获取本机上配置好的Oracle服务名

 2006-08-30 17:13:41 来源:WEB开发网   
核心提示: /* 获取Oracle服务名 1,查询注册表,获取本机上配置好的Oracle服务名,获取oracle安装根目录 如:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ORACLE_HOME REG_SZ E:\ORACLE\ORA92 得知oracle服务名文件所在地:根目录\netw

   /*
     获取Oracle服务名
     1。查询注册表,获取oracle安装根目录
       如:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ORACLE_HOME  REG_SZ  E:\ORACLE\ORA92
       得知oracle服务名文件所在地:根目录\network\ADMIN\tnsnames.ora
      
     2。解析该文件,该文件结构如
       # ------------------------------------------------
       PORTAL =
       (DESCRipTION =
         (ADDRESS_LIST =
         (ADDRESS = (PROTOCOL = TCP)(HOST = 134.104.52.6)(PORT = 1521))
         )
         (CONNECT_DATA =
         (SERVICE_NAME = portal)
         )
       )

   3。解析要点:
       一行一行获取再解析
       跳过以#打头的注释行
       过滤掉空格后,首字符在A~z之间的行就包含了Oracle服务名
       截取该行第一个“=”号左边的字符串,trim处理后就是Oracle服务名了
     */
     public static string[] GetOracleTnsNames()
     {
       try
       {
         // 查询注册表,获取oracle服务文件路径
         RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("ORACLE");
         string home = (string)key.GetValue("ORACLE_HOME");
         string file = home + @"\network\ADMIN\tnsnames.ora";

       // 解析文件
         string line;
         ArrayList arr = new ArrayList();
         StreamReader sr = new StreamReader(file);
         while ((line = sr.ReadLine()) != null)
         {
           line = line.Trim();
           if (line != "")
           {
             char c = line[0];
             if ( c>= 'A' && c<='z')
               arr.Add(line.Substring(0, line.IndexOf(' ')));
           }
         }
         sr.Close();

       // 返回字符串数组
         return (string[])arr.ToArray(typeof(string));
       }
       catch (Exception ex)
       {
         return null;
       }
     }

http://www.cnblogs.com/surfsky/archive/2006/08/29/489682.html

Tags:获取 本机 配置

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接