【发布时间】:2016-10-01 04:50:03
【问题描述】:
当架构名称与用户名不同时,我在尝试连接到指定架构名称的 oracle 数据库时遇到问题。
我曾经使用下一个字符串连接。
但在这种情况下,数据库的 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 中一样。
如何更改连接字符串以添加数据库名称?
例如:
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";
【问题讨论】:
-
您使用的是 32 位 Oracle 客户端吗?如果是这样,您不必设置连接字符串来使用
TnsNames,您仍然可以在您的 app.Config 或 Web.Config 中使用此样式,我目前正在使用 Oracle,它以这种方式工作。<connectionStrings> <add name="DbConn" connectionString=" Data Source=DataBaseName;User Id=xxx;Password=xxxx;"/> -
嗨,我正在使用 app.config,但我不明白这一点。
-
什么是不明白的......也许你应该阅读Configuration Class 是什么以及它是如何工作的
-
我已经与 oracle 数据库支持进行了交谈。他们告诉我这是不可能的。我需要在查询中指定所有者。那么,你真的认为你比他们知道的更多吗?你的解决方案是无用的。
-
这就是为什么我目前正在使用它,并且在 64 位机器上使用 32 位 Oracle 客户端,您需要将项目从 AnyCPU 设置为 x86 祝我好运,我正在使用我在cmets早点..