当前位置: 首页 > 知识库问答 >
问题:

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

施飞驰
2023-03-14

我有一个简单的c#应用程序,可以连接到Oracle 12c。用户提供有关其Oracle服务器的信息:主机、端口、服务名称、用户名和密码。在启动应用程序的机器上,我将“胖”Oracle原生客户端12.02.00.01与我的应用程序一起安装。我需要一个连接字符串来连接到用户提供的服务器。当我修改SNAMES时。要指定tns服务名称的客户端的ora文件:

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文件不是一个选项。还修改了tnsnames。每次用户在应用程序中输入一些信息时,运行时的ora客户端文件也不是一个选项。让用户在启动应用程序之前创建数据源,或者在每次编辑某些字段时在运行时创建数据源,这不是一个选项。我必须找到一种方法,在忽略tnsname的连接字符串中指定驱动程序主机端口sid/服务名用户名和密码。ora文件或数据源。

我尝试了几个字符串:

  1. 驱动程序={OraClient12Home2中的Oracle};服务器=(描述=(地址列表=(地址=(协议=TCP)(主机=somehost)(端口=1521))(连接数据=(服务名称=ORCL));uid=someuser;pwd=somepassword
  2. 驱动程序={OraClient12Home2中的Oracle};数据源=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=somehost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL));Uid=someuser;Pwd=somepassword
  3. ODBC;驱动程序={OraClient12Home2中的Oracle};服务器=somehost:1521/ORCL;UID=someuser;PWD=somepassword;DBQ=somehost:1521/ORCL
  4. 驱动程序={OraClient12Home2中的Oracle};数据源=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=somehost)(PORT=1521))(CONNECT_Data=(SERVICE_NAME=ORCL));用户Id=someuser;Password=somepassword
  5. 驱动程序={OraClient12Home2中的Oracle};数据源=somehost:1521/ORCL;Persist Security Info=True;用户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();

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

  1. 使用的驱动程序
  2. 主机
  3. 端口
  4. sid或服务名称
  5. 用户名
  6. 密码

我目前试图使用的驱动程序是SQORA32。与Oracle本机客户端12.2.0.1一起提供的dll

任何帮助都是值得的

共有1个答案

萧越泽
2023-03-14

好的,我得到了正在工作的连接字符串

Driver={Oracle in OraClient12Home2};DBQ=somehost:port/servicename;UID=someuser;PWD=somepassword;
 类似资料:
  • 我们有一个使用Oracle 19.3数据库运行的项目,以及一个使用Oracle 19.3 JDBC驱动程序(在Maven Central上可用)的Java应用程序。在带有JRE1.8的Windows上,一切都很好,但当我运行在构建服务器上或在带有OpenJDK11.0.3的WSL Ubuntu中时,它拒绝连接到数据库。具体地说: 如果切换到18.3JDBC驱动程序,在这两种环境中一切都很好;如果我

  • 那么,为什么Oracle JDBC驱动程序创建使用ISO-8859-1字节编码的字符串呢?如何在不改变数据库(也不转换字符串)的情况下获得UTF-8字节编码的字符串?我可以从驱动程序配置ou JMV args中更改它吗?

  • 我正在尝试使用本教程连接Oracle数据库。当我使用命令行:java-cp c:\jdbc-test\ojdbc6.jar;c:\jdbc-test OracleJDBC我已经将ojdbc6.jar与OracleJDBC.java放在同一个文件夹中。现在我需要在Eclipse上运行它,但它给我一个错误: 是因为OJDBC6.jar位置吗?

  • 我有一个问题,我不太确定如何解决:我有一个网络应用程序(打包为战争),客户端可以配置他们希望指向的数据库。我们支持PostgreSQL和红移(以及其他)。JDBC4驱动程序自动加载,这很好。问题是这样的: RedShift JDBC驱动程序似乎会在PostgreSQL之前响应jdbc://postgresql连接字符串。这会在连接到PostgreSQL数据库时导致JDBC错误。 我在pom.xml

  • 本文向大家介绍字符串连接的Java程序。,包括了字符串连接的Java程序。的使用技巧和注意事项,需要的朋友参考一下 String类的 concat()方法将指定的字符串连接到该字符串的末尾。 示例 输出结果

  • 我想从jdbc连接到AzureSQL服务器。 我从azure管理控制台复制连接字符串。有点像: jdbc:sqlserver://XXXX.database.windows.net:1433;数据库=yyy;使用者=ZZZZZ@XXXX;密码=ppppppppppppp;加密=真;hostNameInCertificate=*。数据库窗户。网 当我尝试使用此值连接时,出现以下错误: com.mic