public ConnectionState GetConnectionState(SqlConnectionString connectionString) { var connectionStringStr = connectionString?.ToString(); if (string.IsNullOrWhiteSpace(connectionStringStr)) { return(ConnectionState.Invalid); } var factory = DbProviderFactories.GetFactory(connectionString.DbProvider.InvariantName); var connection = factory.CreateConnection(); if (connection == null) { return(ConnectionState.Invalid); } // Try to open try { connection.ConnectionString = connectionStringStr; connection.Open(); } catch { return(ConnectionState.Invalid); } finally { connection.Dispose(); } return(ConnectionState.Valid); }
public IList <string> GetDatabases(SqlConnectionString connectionString) { var dbProvider = connectionString.DbProvider?.InvariantName; if (string.IsNullOrWhiteSpace(dbProvider)) { return(new List <string>()); } IDataSourceProvider provider = null; _providers.TryGetValue(dbProvider, out provider); if (provider == null) { return(new List <string>()); } var factory = DbProviderFactories.GetFactory(dbProvider); var databases = new List <string>(); using (var sqlConnection = factory.CreateConnection()) { if (sqlConnection == null) { return(new List <string>()); } sqlConnection.ConnectionString = connectionString.ToString(); sqlConnection.Open(); using (var command = factory.CreateCommand()) { if (command == null) { return(new List <string>()); } command.Connection = sqlConnection; command.CommandText = provider.DataBasesQuery; command.CommandType = CommandType.Text; using (IDataReader dataReader = command.ExecuteReader()) { while (dataReader.Read()) { databases.Add(dataReader[0].ToString()); } } } } return(databases); }