用C#链接Oracle Database总是出错(ORA-12154: TNS: 无法解析指定的连接标识符)
抛出的exception是ORA-12154:TNS:无法解析指定的连接标识符。我写的代码是:classProgram{staticvoidMain(string[]ar...
抛出的exception是ORA-12154: TNS: 无法解析指定的连接标识符。
我写的代码是:
class Program
{
static void Main(string[] args)
{
string connectionString = " User Id=HR; Password=xxxxxx; Data Source=ORCL";
OracleConnection connection = new OracleConnection(connectionString);
connection.Open();
Console.WriteLine("ServerVersion: " + connection.ServerVersion
+ "\nDataSource: " + connection.DataSource);
Console.ReadKey();
}
}
三个问题:第一,我下载了ODP.NET package,是for 11g的。我的数据库是10g的。这个会不会是问题?
第二,用户名和密码是HR,和XXXX,我只用过登录iSQL*Plus,不知道是不是可以用在这里。
第三,ORCL是instance name,在tnsnames.ora里面有对应信息,如下:
# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 150.212.4.31)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
(后面还有其他信息,省略了。)
会不会是这个ORCL使用错误,如果是的话,data source后面应该跟什么string呢?
非常感谢~ 展开
我写的代码是:
class Program
{
static void Main(string[] args)
{
string connectionString = " User Id=HR; Password=xxxxxx; Data Source=ORCL";
OracleConnection connection = new OracleConnection(connectionString);
connection.Open();
Console.WriteLine("ServerVersion: " + connection.ServerVersion
+ "\nDataSource: " + connection.DataSource);
Console.ReadKey();
}
}
三个问题:第一,我下载了ODP.NET package,是for 11g的。我的数据库是10g的。这个会不会是问题?
第二,用户名和密码是HR,和XXXX,我只用过登录iSQL*Plus,不知道是不是可以用在这里。
第三,ORCL是instance name,在tnsnames.ora里面有对应信息,如下:
# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 150.212.4.31)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
(后面还有其他信息,省略了。)
会不会是这个ORCL使用错误,如果是的话,data source后面应该跟什么string呢?
非常感谢~ 展开
展开全部
你的问题主要是找不到服务器。
你的监听文件监听的是你的ip地址,你有两个选择,要么把监听程序改为你的本机地址localhost或127.0.0.1 (建议你用这个,因为如果你监听的是ip的话,你拔掉网线,你的Oracle会出问题的)如果这么做的话,还要在lisnter.ora文件中把相应的地址改为你的本机地址。这时候再运行你的程序就应该没问题了。
如果你不想改这里,那你在程序里这样写应该可以DataSource=(ADDRESS=(PROTOCOL=TCP)(HOST=ipadress)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl))
不过这是就相当于是远程连接了
你的监听文件监听的是你的ip地址,你有两个选择,要么把监听程序改为你的本机地址localhost或127.0.0.1 (建议你用这个,因为如果你监听的是ip的话,你拔掉网线,你的Oracle会出问题的)如果这么做的话,还要在lisnter.ora文件中把相应的地址改为你的本机地址。这时候再运行你的程序就应该没问题了。
如果你不想改这里,那你在程序里这样写应该可以DataSource=(ADDRESS=(PROTOCOL=TCP)(HOST=ipadress)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl))
不过这是就相当于是远程连接了
展开全部
按你的描述,DataSource后面就是跟这个ORCL
你的连接字符串是没有问题的
你在C#这台机器上用SqlPlus连接一下ORCL,看能不能连上?
或者装一个PLSQL,连接一下ORCL,如果能连接上,那C#也应该能连上
如果连不上,那就要先配置好Oracle
你的连接字符串是没有问题的
你在C#这台机器上用SqlPlus连接一下ORCL,看能不能连上?
或者装一个PLSQL,连接一下ORCL,如果能连接上,那C#也应该能连上
如果连不上,那就要先配置好Oracle
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string connectionString ="Data Source=orcl;user=HR;password=xxxxx"
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询