首页 文章

Oracle连接字符串使用Oracle Native Client 12指定驱动程序

提问于
浏览
1

我有简单的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 回答

  • 0

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

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

相关问题