如何将 C# 与指定架构名称的 Oracle 数据库连接



当模式名称与用户名不同时,尝试连接到指定模式名称的 oracle 数据库时遇到问题。

我曾经使用下一个字符串进行连接。

但在这种情况下,数据库的架构与用户名相同。

     String con = "data source= (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = " + host + ")(PORT = " + port + ")))(CONNECT_DATA =(SERVICE_NAME = " + servicename + ")));
USER ID=" + user + ";
PASSWORD=" + pass;

所以登录查询就像

SELECT * FROM usuarios WHERE usuario='545478';

现在

我有一个新用户,与架构不同,所以现在我需要使用架构名称更改所有 sql 查询。例如,如果架构名称PRODUCTION_DB则需要将查询更改为:

SELECT * FROM PRODUCTION_DB.usuarios WHERE usuario='545478';

但我不想更改代码中的所有查询。我更喜欢像在 MySQL 中一样在连接中指定数据库名称。

如何更改连接字符串以添加数据库名称?

例如:

String con = "data source= (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = " + host + ")(PORT = " + port + ")))(CONNECT_DATA =(SERVICE_NAME = " + servicename + ")));
USER ID=" + user + ";PASSWORD=" + pass;
 DATABASE = "PRODUCTION_DB";

可以通过以下方式完成:

OracleConnection connection = new OracleConnection(connectionString); 
connection.Open();
OracleCommand cm = connection.CreateCommand();
cm.CommandText = "ALTER SESSION SET CURRENT_SCHEMA = PRODUCTION_DB";
cm.ExecuteNonQuery();

请尝试以下连接字符串:

 string connectionString = "user id=uat;password=*****;data source=localhost:1521/orcl";
 OracleConnection connection = new OracleConnection(connectionString);
 connection.Open();

哪里:

  • orcl - 是我的数据库名称 (SID)
  • uat - 是架构名称(用户名)
  • 本地主机:1521 - 是一个服务器名称(在我的例子中:本地主机)和一个端口。

最新更新