Tag: rdbms

如何从连接字符串中提取数据库名称而不管RDBMS?

我正在研究那个不了解正在使用的RDBMS的类。 当然,其余的应用程序都很清楚它。 连接字符串输入到此类。 我需要数据库名称。 如何从连接字符串中提取数据库名称而不管RDBMS? 我读了以下问题: 如何使用SqlConnectionStringBuilder从连接字符串获取数据库名称 提取sql连接字符串的属性 在那里建议采用以下方法: 使用连接字符串构建器类: 大多数答案使用连接字符串构建器和特定的RDBMS。 所以,我必须使用SqlConnectionStringBuilder或MySqlConnectionStringBuilder等。这是特定于RDBMS的。 为了实现这个跨RDBMS,我必须使用DbConnectionStringBuilder 。 以下是DbConnectionStringBuilder的代码: DbConnectionStringBuilder builder = new DbConnectionStringBuilder(); builder.ConnectionString = connectionString; string databaseName = builder[“Initial Catalog”] as string; 这种方法的问题是使用的关键”Initial Catalog” 。 由于连接字符串的语法对于每个RDBMS是不同的,因此其他RDBMS的连接字符串可能不包含密钥,并且代码不起作用。 例如,上面的代码不适用于跟随有效的MySql连接字符串,因为它不包含密钥。 Server=MyServer;Database=MyDB;User ID=MyUser;Password=MyPassword; 使用Connection类: 同样,我必须使用IDbConnection接口或DbConnection抽象类来构建这个跨RDBMS。 我无法创建接口或抽象类的实例。 我必须使用具体类来实例化它,它再次成为特定于RDBMS的。 字符串处理: 使用C#或正则表达式或类似的字符串处理function解析字符串。 正如我之前所说,连接字符串的语法因RDBMS而异,但这不起作用。 我能想到的其他解决方法是使用一些powershell逻辑,例如检查多个键( Initial Catalog, Database等)而不是一个。 如果可能,我想避免这种情况。 这可能是无穷无尽的条件,因此不是一种可靠的方式。 如果这只是要走的路,请建议可能的密钥来检查那些覆盖所有RDBMS的连接字符串的所有可能语法。 注意: 当我说“跨RDBMS”或“所有RDBMS”时,我实际上并不是指“地球上的所有RDBMS”。 解决方案应涵盖至少三个RDBMS(SQL Server,My […]