我有一个简单的c#应用程序,可以连接到Oracle 12c。用户提供有关其Oracle服务器的信息:主机,端口,服务名称,用户名和密码。在启动应用程序的机器上,我有" fat" Oracle Native Client 12.02.00.01与我的应用程序一起安装。我需要一个连接字符串来连接到提供的服务器用户。当我修改客户端的tnsnames.ora文件以指定tns服务名称时:
somealias=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=somehost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL))
我可以使用此连接字符串
DRIVER={Oracle in OraClient12Home2};Dbq=somealias;uid=someuser;pwd=somepassword;
一切正常。
但是,让用户修改客户端tnsnames.ora文件,在启动应用程序之前提供其连接信息不是一种选择。每次用户在app中输入一些信息时,也要在运行时修改tnsnames.ora客户端文件。让用户在启动app之前创建Datasource或在每次编辑某些字段时在运行时创建数据源都不是一个选项。我必须找到一种方法如何在连接字符串中指定驱动程序主机端口sid /服务名称用户名和密码,省略tnsnames.ora文件或数据源。
我尝试了几个字符串:
他们都没有奏效。 这是我的代码(注意格式化正在改变,具体取决于将使用哪个连接字符串):
var driver = "{" + driverName + "}";
var connect = "DRIVER=" + driver
+ ";UID=" + UserName
+ ";PWD=" + Password
+ ";HOST=" + Host
+ ";PORT=" + Port
+ ";SERVICENAME=" + ServiceName;
var connection = new OdbcConnection(connect);
connection.Open();
我需要的是一个连接字符串,我可以指定:
目前正在尝试使用的驱动程序是与Oracle本机客户端12.2.0.1一起提供的SQORA32.dll
任何帮助都非常适合
答案 0 :(得分:0)
好的,我得到了正在运行的连接字符串
Driver={Oracle in OraClient12Home2};DBQ=somehost:port/servicename;UID=someuser;PWD=somepassword;