我有简单的c#应用程序,它连接到Oracle 12c . 用户提供有关其Oracle服务器的信息:主机,端口,服务名称,用户名和密码 . 在启动应用程序的计算机上,我将“胖”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文件或数据源 .
我尝试了几个字符串:
-
DRIVER = ; SERVER =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = somehost)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORCL)); uid = someuser ; PWD = somepassword;
-
Driver = ; DataSource =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = somehost)(PORT = 1521))(CONNECT_DATA =(SERVICE_NAME = ORCL))); Uid = someuser; Pwd = somepassword;
-
ODBC; Driver = ; SERVER = somehost:1521 / ORCL; UID = someuser; PWD = somepassword; DBQ = somehost:1521 / ORCL;
-
Driver = ;数据源=(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = somehost)(PORT = 1521))(CONNECT_DATA =(SERVICE_NAME = ORCL)));用户ID = someuser;密码= somepassword;
-
Driver = ; Data Source = somehost:1521 / ORCL; Persist Security Info = True; User ID = someuser; Password = somepassword; Unicode = True;
他们都没有工作 . 这是我的代码(注意格式化正在改变,具体取决于将使用哪个连接字符串):
var driver = "{" + driverName + "}";
var connect = "DRIVER=" + driver
+ ";UID=" + UserName
+ ";PWD=" + Password
+ ";HOST=" + Host
+ ";PORT=" + Port
+ ";SERVICENAME=" + ServiceName;
var connection = new OdbcConnection(connect);
connection.Open();
我需要的是一个连接字符串,我可以指定:
-
使用的驱动程序
-
主持人
-
端口
-
sid或服务名称
-
用户名
-
密码
我目前正在尝试使用的驱动程序是与Oracle本机客户端12.2.0.1一起提供的SQORA32.dll
任何帮助都很受欢迎
1 回答
好的,我得到了正在运行的连接字符串