public MainWindow() { InitializeComponent(); CustomGrid = DataTableGrid; var connectionStrings = ConfigurationManager.ConnectionStrings; foreach (ConnectionStringSettings connectionString in connectionStrings) { switch (connectionString.ProviderName) { case "PostgreSQL": PostgreCommunications.Add(connectionString.Name, new NpgsqlCommunication(connectionString)); PostgreCommunications[connectionString.Name].FillDs(); BuildTreeView(DatabasesTreeView, PostgreCommunications[connectionString.Name]); break; case "MS SQL": MsCommunications.Add(connectionString.Name, new MsCommunication(connectionString)); MsCommunications[connectionString.Name].FillDs(); BuildTreeView(DatabasesTreeView, MsCommunications[connectionString.Name]); break; } } }
private void AddDb_Click(object sender, RoutedEventArgs e) { try { NpgsqlConnectionStringBuilder connectionBuilder; var addDbWindow = new AddDbWindow(); if (addDbWindow.ShowDialog() == true) { connectionBuilder = NpgsqlCommunication.CreateConnectionStringBuilder( addDbWindow.Server, addDbWindow.Port, addDbWindow.Database, addDbWindow.User, addDbWindow.Password); var connection = new NpgsqlConnection(connectionBuilder.ConnectionString); connection.Open(); if (connection.State == ConnectionState.Open) { MessageBox.Show("The connection to " + addDbWindow.Database + " was successful. Database saved", "Connected", MessageBoxButton.OK, MessageBoxImage.Information); } else { MessageBox.Show("Failed to connect to database, maybe server is closed or your input is wrong.", "Failure", MessageBoxButton.OK, MessageBoxImage.Warning); return; } connection.Close(); } else { return; } var communication = new NpgsqlCommunication(addDbWindow.Database, addDbWindow.User, addDbWindow.Server, addDbWindow.Port, addDbWindow.Password); // Create recording in the DbCourseWork.exe.Config var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var settings = configFile.ConnectionStrings.ConnectionStrings; if (settings[addDbWindow.Database] == null) { settings.Add(new ConnectionStringSettings(addDbWindow.Database, connectionBuilder.ConnectionString)); settings[addDbWindow.Database].ProviderName = "PostgreSQL"; PostgreCommunications.Add(addDbWindow.Database, communication); PostgreCommunications[addDbWindow.Database].FillDs(); BuildTreeView(DatabasesTreeView, communication); } else { settings[addDbWindow.Database].Name = addDbWindow.Database; settings[addDbWindow.Database].ConnectionString = connectionBuilder.ConnectionString; settings[addDbWindow.Database].ProviderName = "PostgreSQL"; PostgreCommunications.Remove(addDbWindow.Database); PostgreCommunications.Add(addDbWindow.Database, communication); PostgreCommunications[addDbWindow.Database].FillDs(); RemoveTreeView(DatabasesTreeView, addDbWindow.Database); BuildTreeView(DatabasesTreeView, communication); } configFile.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("connectionStrings"); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }