gpt4 book ai didi

c# - 在 C# 中获取没有密码值的连接字符串

转载 作者:行者123 更新时间:2023-11-30 14:01:44 27 4
gpt4 key购买 nike

我尝试创建方法来获取连接字符串值但没有密码值,或者像 * 字符一样显示密码。我需要在日志记录中使用它。

我为 Oracle、SqlServer 使用 ConnectionStringBuilder。

无论如何,另一种更好的方式来实现它?也许更通用。它发生了什么 ProviderName 是空的...

public static string GetConnectionStringWithouPassword(this ConnectionStringSettings cs)
{
if (cs == null || string.IsNullOrEmpty(cs.ConnectionString)) return null;

if (cs.ProviderName.ToLower().Equals("Oracle.DataAccess.Client".ToLower()))
{
var builderOra = new Oracle.DataAccess.Client.OracleConnectionStringBuilder(cs.ConnectionString);
return "";
}

if (cs.ProviderName.ToLower().Equals("System.Data.SqlClient".ToLower()))
{
var builderSql = new SqlConnectionStringBuilder(cs.ConnectionString);
return "";
}

return null;
}

//
public static string ObtenerCadenasConexion()
{
var sb = new StringBuilder();
ConnectionStringSettingsCollection settings = ConfigurationManager.ConnectionStrings;

if (settings != null)
{
foreach (ConnectionStringSettings cs in settings)
{
sb.AppendLine("Name: " + cs.Name);
sb.AppendLine("ProviderName: " + cs.ProviderName);
sb.AppendLine("ConnectionString: " + cs.GetConnectionStringWithouPassword() + Environment.NewLine);
}
}

return sb.ToString();
}

最佳答案

检查这个:DbConnectionStringBuilder Class

您可以使用Remove 方法,不需要魔法解析:

例如,从那个 MSDN 页面:

static void Main()
{
DbConnectionStringBuilder builder = new
DbConnectionStringBuilder();
builder.ConnectionString =
@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\Demo.mdb;" +
"Jet OLEDB:System Database=system.mdw;";

// Try to remove an existing item.
TryRemove(builder, "Provider");

// Try to remove a nonexistent item.
TryRemove(builder, "User ID");

// Try to remove an existing item,
// demonstrating that the search isn't
// case sensitive.
TryRemove(builder, "DATA SOURCE");
Console.ReadLine();
}

static void TryRemove(DbConnectionStringBuilder builder, string itemToRemove)
{
if (builder.Remove(itemToRemove))
{
Console.WriteLine(@"Removed '{0}'", itemToRemove);
}
else
{
Console.WriteLine(@"Unable to remove '{0}'", itemToRemove);
}
Console.WriteLine(builder.ConnectionString);
}

关于c# - 在 C# 中获取没有密码值的连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7833607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com