private void DbMenuItem_Disconnect(object sender, RoutedEventArgs e) { if (!(sender is MenuItem menuItem)) { return; } if (!(menuItem.Parent is ContextMenu contextMenu)) { return; } if (!(contextMenu.PlacementTarget is TreeViewItem viewItem)) { return; } if (!(viewItem.Header is StackPanel stack)) { return; } DatabasesTreeView.Items.Remove(viewItem); var header = (TextBlock)stack.Children[1]; PostgreCommunications.Remove(header.Text); var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.ConnectionStrings.ConnectionStrings.Remove(header.Text); config.Save(); }
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); } }