如何使用C#从oracle连接字符串中获取oracle用户实例的密码?

时间:2015-07-30 08:02:41

标签: c# oracle

我想从我存储在App.config文件中的连接字符串中获取oracle db实例的用户ID和密码。 这是存储在App.Config文件

中的连接字符串
<add name="MyConnection" connectionString="Data Source=xe;User ID=UsmanDBA;Password=root;"   providerName="System.Data.SqlClient" />

我已经尝试了OracleConnectionString Builder,但它没有返回连接字符串的密码。这是代码:

 public string ConPass()
        {
            OracleConnectionStringBuilder builder = new OracleConnectionStringBuilder();
            builder.ConnectionString = con.ConnectionString;
            return builder.Password;
        }

此方法确实返回用户ID但不返回密码 有什么我想念的吗?或者还有其他方法吗? 请帮我解决这个问题..

2 个答案:

答案 0 :(得分:2)

ConnectionString属性永远不会包含密码。这是安全措施。在您的代码中,密码已在此行中丢失:

builder.ConnectionString = con.ConnectionString;

你必须设计一种不同的方法。例如,从config读取连接字符串,然后将其提供给连接字符串构建器。如果您只有连接并且没有构造它的配置条目的信息,那么这通常不适用...

在相关的说明中,SQL Server连接(SqlConnection)公开了可用于读取密码的Credential属性(我实际上没有尝试过这个)。我不知道Oracle连接实现中的类似属性。

答案 1 :(得分:1)

您可以使用SqlConnectionStringBuilder

string conString = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
OracleConnectionStringBuilder builder = new  OracleConnectionStringBuilder(conString);
string user = builder.UserID;
string pass = builder.Password;