private static bool Configure(string connectionId, Func <DatabaseConnectionConfiguration, bool> validateConfigFunc) { var configurationIsOk = false; try { using (var dialog = new DataConnectionDialog()) { dialog.ChooseDataSourceTitle = $"Database connection: {connectionId}"; dialog.Title = $"Database connection: {connectionId}"; // If you want the user to select from any of the available data sources, do this: DataSource.AddStandardDataSources(dialog); // OR, if you want only certain data sources to be available // (e.g. only SQL Server), do something like this instead: //dialog.DataSources.Add(DataSource.SqlDataSource); //dialog.DataSources.Add(DataSource.SqlFileDataSource); while (!configurationIsOk) { // The way how you show the dialog is somewhat unorthodox; `dialog.ShowDialog()` // would throw a `NotSupportedException`. Do it this way instead: DialogResult userChoice = DataConnectionDialog.Show(dialog); // Return the resulting connection string if a connection was selected: if (userChoice == DialogResult.OK) { var config = new DatabaseConnectionConfiguration(); config.ConnectionString = dialog.ConnectionString; config.ConnectionId = connectionId; if (dialog.SelectedDataSource.Name.Contains("Oracle")) { config.DatabaseType = EDatabaseType.Oracle; } else { config.DatabaseType = EDatabaseType.MSSQLServer; } DatabaseConnectionManager.SaveConfiguration(config); configurationIsOk = validateConfigFunc(config); } else { configurationIsOk = false; } } } } catch (Exception e) { MessageBox.Show(e.Message); } return(configurationIsOk); }
public static bool Configure(DatabaseConnectionConfiguration configuration) { try { using (var dialog = new DataConnectionDialog()) { dialog.ChooseDataSourceTitle = $"Database connection: {configuration.ConnectionId}"; dialog.Title = $"Database connection: {configuration.ConnectionId}"; DataSource.AddStandardDataSources(dialog); if (!string.IsNullOrEmpty(configuration.ConnectionString)) { if (configuration.DatabaseType == EDatabaseType.MSSQLServer) { dialog.SelectedDataSource = DataSource.SqlDataSource; } else { dialog.SelectedDataSource = DataSource.OracleDataSource; } dialog.ConnectionString = configuration.ConnectionString; } DialogResult userChoice = DataConnectionDialog.Show(dialog); // Return the resulting connection string if a connection was selected: if (userChoice == DialogResult.OK) { configuration.ConnectionString = dialog.ConnectionString; if (dialog.SelectedDataSource.Name.Contains("Oracle")) { configuration.DatabaseType = EDatabaseType.Oracle; } else { configuration.DatabaseType = EDatabaseType.MSSQLServer; } DatabaseConnectionManager.SaveConfiguration(configuration); return(true); } } } catch (Exception e) { MessageBox.Show(e.Message); } return(false); }
public static bool CheckDatabaseConnection(string connectionId, Func <DatabaseConnectionConfiguration, bool> validateConfigFunc, bool allowConfiguration, bool forceConfiguration = false) { LoggerService.LogDebugAsync("CheckRegisteredDatabasesConnections", () => new { allowConfiguration, forceConfiguration, connectionId }).Wait(); if ((allowConfiguration || forceConfiguration) && DatabaseConnectionConfigurator == null) { var logmessage = "DatabaseConnectionConfigurator is null"; LoggerService.LogAsync(logmessage, ELogType.Error, new { allowConfiguration, forceConfiguration, connectionId }).Wait(); throw new InvalidOperationException(logmessage); } var connectionSucceeded = false; DatabaseConnectionConfiguration config = null; try { config = DatabaseConnectionManager.GetConfiguration(connectionId); } catch (DatabaseConnectionException) { config = new DatabaseConnectionConfiguration() { ConnectionId = connectionId }; } //do { try { // Try the first time without configuring if (forceConfiguration || !Validate()) { // If it fails, try to configure, and then check again if ((allowConfiguration || forceConfiguration) && DatabaseConnectionConfigurator.Configure(ref config)) { DatabaseConnectionManager.SaveConfiguration(config); connectionSucceeded = Validate(); } } else { connectionSucceeded = true; } } catch (Exception ex) { LoggerService.LogAsync(ex).Wait(); } } //while (!connectionSucceeded && allowConfiguration); return(connectionSucceeded); bool Validate() { try { return(validateConfigFunc(config)); } catch (Exception dbe) { LoggerService.Log(dbe); return(false); } } }