我想用C#写代码列出ORACLE客户端注册的服务名,
现已找到了保存ORACLE客户端注册的服务名的文件,
文件路径为…\oracle\ora92\network\admin\tnsnames.ora
格式为文本文件,形式如下:
# TNSNAMES.ORA Network Configuration File: D:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.MMSERVER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ora9)
(SERVER = DEDICATED)
)
)GISFENG_WUZF =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wuzf)(PORT = 1521))
)
(CONNECT_DATA =
(SID = gisfeng)
(SERVER = DEDICATED)
)
)
现在只想获得服务名(MMSERVER,GISFENG_WUZF),不知道用哪种方式写好一点。希望探讨一下,有分送的哦!
现已找到了保存ORACLE客户端注册的服务名的文件,
文件路径为…\oracle\ora92\network\admin\tnsnames.ora
格式为文本文件,形式如下:
# TNSNAMES.ORA Network Configuration File: D:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.MMSERVER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ora9)
(SERVER = DEDICATED)
)
)GISFENG_WUZF =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wuzf)(PORT = 1521))
)
(CONNECT_DATA =
(SID = gisfeng)
(SERVER = DEDICATED)
)
)
现在只想获得服务名(MMSERVER,GISFENG_WUZF),不知道用哪种方式写好一点。希望探讨一下,有分送的哦!
{
string strTxt="";
string rStr="";
StreamReader sr=File.OpenText("D:\\oracle\\ora92\\network\\admin\\tnsnames.ora");
string tempStr;
while((tempStr=sr.ReadLine())!= null)
{
strTxt=strTxt + tempStr + "\n";
} int k=0;
for (int i=0;i<strTxt.Length;i++)
{
string c=strTxt.Substring(i,1);
if (c.Equals("#"))
{
while(!c.Equals("\n"))
{
i=i+1;
c=strTxt.Substring(i,1);
}
}
if(c.Equals("("))
{
k=k+1;
}
if (k==0 && !c.Equals("\n") && !c.Equals(" "))
{
rStr=rStr+c;
}
if(c.Equals(")"))
{
k=k-1;
}
}
rStr=rStr.Remove(rStr.Length-1,1);
this.comboBox1.DataSource=rStr.Split('=');
}