我正在尝试从C#连接Oracle 11g。我已经关注[this link],定义了这样的连接别名:
moviess =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xe)
)
)
尝试使用Visual Studio中的服务器资源管理器进行连接时,它会出现以下错误:
以下是适用于Visual Studio的Oracle Developer Tool的安装目录。
我哪里错了?请帮助我。
答案 0 :(得分:1)
这是问题所在:
ORA-12154: TNS: Could not resolve the connect identifier specified
这是原因:
问:Oracle 11g是否实际安装在您的本地PC上?如果没有,则不能使用“localhost”。您还必须安装Oracle客户端。https://docs.oracle.com/cd/B19306_01/server.102/b14219/net12150.htm
ORA-12154:TNS:无法解析指定的连接标识符
原因:使用连接标识符请求与数据库或其他服务的连接,并且指定的连接标识符可以 不能使用其中一个命名解析成连接描述符 方法配置。
例如,如果是连接标识符的类型 used是一个网络服务名称,然后网络服务名称不能 在命名方法存储库中找到,或者存储库不可能 位于或到达。
Action: - If you are using local naming (TNSNAMES.ORA file): - Make sure that "TNSNAMES" is listed as one of the values of the NAMES.DIRECTORY_PATH parameter in the Oracle Net profile (SQLNET.ORA) - Verify that a TNSNAMES.ORA file exists and is in the proper directory and is accessible. - Check that the net service name used as the connect identifier exists in the TNSNAMES.ORA file.
相关链接:
答案 1 :(得分:1)
您可以使用NuGet中的 Oracle ODP.Net驱动程序。
你可以试试这些:
以下是示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.ManagedDataAccess.Client;
namespace SampleOracle
{
class Program
{
static void Main(string[] args)
{
OracleConnection connection = new OracleConnection();
connection.ConnectionString = "User Id=<username>;Password=<password>;Data Source=<data source>"; //Data Source Format -> //IP_HOST:PORT/SERVICE_NAME e.g. //127.0.0.1:1521/Service_Name
connection.Open();
Console.WriteLine("Connected to Oracle" + connection.ServerVersion);
}
}
}
示例输出:
希望这有帮助!
答案 2 :(得分:0)
要到达Add Connection
窗口,您必须先通过此窗口,对吗?
信息很清楚。您尝试使用的提供程序已弃用,并且不支持Oracle 11。
根据建议,请考虑下载并安装Oracle Developer Tools for Visual Studio。
编辑:我完全忘记提及这个非常重要的消息,因为当你确实这样做时: 不 使用{{1}连接到Oracle数据库以进行开发。 sys
用户非常特殊,只有在绝对必要时才能使用。而是创建一个单独的用户,并将其用于开发。