如何将c#与指定数据库名称的Oracle数据库连接?

时间:2016-06-01 17:20:55

标签: c# database oracle

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

我曾经使用下一个String进行连接。 但在这种情况下,数据库的Schema与用户名相同。

     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';

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

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

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

如何更改de String连接以添加数据库名称?

例如:

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";

2 个答案:

答案 0 :(得分:1)

尝试此连接字符串:

instance member 'name' cannot be used on type 'clothing_category.'

其中:

  • orcl - 是我的数据库名称(SID)
  • uat - 是架构名称(用户名)
  • localhost:1521 - 是服务器名称(在我的情况下:localhost)和端口。

答案 1 :(得分:1)

可以通过以下方式完成:

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