Oracle连接字符串,用于指定驱动程序

时间:2018-05-03 16:47:12

标签: c# oracle database-connection driver connection-string

我有一个简单的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文件或数据源。

我尝试了几个字符串:

  1. DRIVER = {Oracle in OraClient12Home2}; SERVER =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST =,某)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORCL)); UID = SomeUser是否; PWD = somepassword; < / LI>
  2. Driver = {Oracle in OraClient12Home2};数据源=(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST =,某)(PORT = 1521))(CONNECT_DATA =(SERVICE_NAME = ORCL))); UID = SomeUser是否; PWD = somepassword;
  3. ODBC; Driver = {Oracle in OraClient12Home2}; SERVER = somehost:1521 / ORCL; UID = someuser; PWD = somepassword; DBQ = somehost:1521 / ORCL;
  4. Driver = {Oracle in OraClient12Home2};数据 源=(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST =,某)(PORT = 1521))(CONNECT_DATA =(SERVICE_NAME = ORCL)));用户 ID = SomeUser是否;密码= somepassword;
  5. Driver = {Oracle in OraClient12Home2};数据源= somehost:1521 / ORCL;坚持安全 Info = True;用户ID = someuser;密码= somepassword; Unicode = True;
  6. 他们都没有奏效。 这是我的代码(注意格式化正在改变,具体取决于将使用哪个连接字符串):

    var driver = "{" + driverName + "}";
                    var connect = "DRIVER=" + driver
                                  + ";UID=" + UserName
                                  + ";PWD=" + Password
                                  + ";HOST=" + Host
                                  + ";PORT=" + Port
                                  + ";SERVICENAME=" + ServiceName; 
                    var connection = new OdbcConnection(connect);
                    connection.Open();
    

    我需要的是一个连接字符串,我可以指定:

    1. 使用的驱动程序
    2. 宿主
    3. 端口
    4. sid或服务名称
    5. 用户名
    6. 密码
    7. 目前正在尝试使用的驱动程序是与Oracle本机客户端12.2.0.1一起提供的SQORA32.dll

      任何帮助都非常适合

1 个答案:

答案 0 :(得分:0)

好的,我得到了正在运行的连接字符串

Driver={Oracle in OraClient12Home2};DBQ=somehost:port/servicename;UID=someuser;PWD=somepassword;