提取sql连接字符串的属性

我想从connectionString(一个字符串变量)中提取服务器和数据库名称。 当我们从DEV移动到STAGE然后转移到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 

请注意名称更改(以及整个字符串的长度)。

如何在不知道数据源和初始目录的长度的情况下捕获数据源和初始目录? 因此,在表单加载时,它将获取服务器和数据库名称以显示给用户(因此他/她可以看到他/她连接到哪个服务器和数据库?

您可以使用连接字符串构建器类,该类构建后具有数据源和初始目录属性

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框架为你工作;)不要搞乱子串或正则表达式

AC#Regex解决方案:

 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 = match.Groups[1].Value; } 

请记住url的有效字符:

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