SQL连接字符串的提取物性质[复制](Extract properties of sql conne

2019-07-30 18:45发布

这个问题已经在这里有一个答案:

  • 如何使用SqlConnectionStringBuilder从连接字符串得到数据库名 7个回答

我想从一个的connectionString(字符串变量)的服务器和数据库名称提取。 服务器和数据库更改的名称,因为我们从DEV移动到舞台上,然后PROD。

下面是一个例子:

Data Source=SERVER_XYZ;Initial Catalog=DATABASE_XYZ;User ID=us;Password=pass

Data Source=SERVER_XYZPQR;Initial Catalog=DATABASE_XYZPQR;User ID=us;Password=pass

注意名称变更(以及整串的长度)。

如何获取数据源和初始目录不知道这将是长? 这样的形式加载,它会得到的服务器和数据库名称,以显示给用户(这样他/她可以看到哪些服务器和数据库,他/她被连接到?

Answer 1:

您可以使用它一次构建具有数据源和初始目录的属性在连接字符串生成器类

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx

string connStr = "Data Source=SERVERx;Initial Catalog=DBx;User ID=u;Password=p"; 

var csb = new SqlConnectionStringBuilder(connStr);

string dataSource = csb.DataSource;
string initialCatalog = csb.InitialCatalog;

让.NET框架做的工作适合你;)没有摆弄子或regexs



Answer 2:

C#正则表达式的解决方案:

String input = "Data Source=SERVER_XYZ;Initial Catalog=DATABASE_XYZ;User ID=us;Password=pass";

// Match the server:
Match serverMatch = Regex.Match(input, @"Source=([A-Za-z0-9_.]+)", RegexOptions.IgnoreCase);

// Match the database:
Match databaseMatch = Regex.Match(input, @"Catalog=([A-Za-z0-9_]+)", RegexOptions.IgnoreCase);

// Get the string
if (serverMatch.Success)
{
  String server = serverMatch.Groups[1].Value;
}

请针对URL记有效字符:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=


文章来源: Extract properties of sql connection string [duplicate]
标签: c# substring