C# 已从连接字符串中删除数据库

C# 已从连接字符串中删除数据库,c#,database,sql-server-2008-r2,C#,Database,Sql Server 2008 R2,我得到了一种方法,可以将数据库连接字符串获取到Sql Server: SqlConnection GetConnectionString() 我调用它,得到连接字符串应该是什么。如果数据库不存在,我需要连接字符串,其中不包含数据库名称。如果我尝试使用包含数据库名称的连接字符串,我会得到一个错误,即它无法连接到数据库,因为它不存在 我是这样打电话的: using (var connection = new SqlConnection(GetConnectionString().Connectio

我得到了一种方法,可以将数据库连接字符串获取到Sql Server:

SqlConnection GetConnectionString()
我调用它,得到连接字符串应该是什么。如果数据库不存在,我需要连接字符串,其中不包含数据库名称。如果我尝试使用包含数据库名称的连接字符串,我会得到一个错误,即它无法连接到数据库,因为它不存在

我是这样打电话的:

using (var connection = new SqlConnection(GetConnectionString().ConnectionString))
有没有一种方法可以在不使用数据库名称的情况下轻松地重新创建连接字符串?

很简单

var connectionString = "data source=someInstance;initial catalog =someDatabase;etc.";

var pattern = "initial catalog[=\\s\\w]+;";

var dbRemoved = Regex.Replace(connectionString, pattern, "");

请注意,我没有处理区分大小写的问题,但这对于您的需求来说应该是一个良好的开端。

您可以使用正则表达式删除
initial catalog=xxx连接字符串的一部分。@Didaxis是的,我就是这么想的。我希望有一种方法可以在不必这样做的情况下提取它。如果您不指定
初始目录
,那么登录时您将被带到默认数据库。如果该数据库不存在,您将得到一个错误,并且连接将被终止。为了避免这种情况,您可以连接到
master
,然后检查数据库是否可用。
SqlConnectionStringBuilder aBuilder = 
   new SqlConnectionStringBuilder(yourConnectionStringWithDatabase);
aBuilder.InitialCatalog = "";

string yourConnectionStringWithoutDatabase = aBuilder.ConnectionString;