/// <summary> /// Changed DB in Connection panel - MS Sql Server only /// </summary> /// <param name="sender"></param> /// <param name="s">Selected DB</param> private async void DatabaseConnectionSidebarOnMsSqlDatabaseChanged(object sender, string s) { await DiagramFacade.CloseDiagramsOnDisconnect(this); SessionProvider.Instance.Database = s; await DatabaseConnectionSidebar.LoadMsSqlData(true); }
/// <summary> /// Drop selected DB - MS Sql Server only /// </summary> /// <param name="sender"></param> /// <param name="dbName">DB for drop</param> private async void DatabaseConnectionSidebarOnDropMsSqlDatabase(object sender, string dbName) { if (dbName.Equals(SessionProvider.Instance.Database)) { await this.ShowMessageAsync("Drop database", $"Database {dbName} is currently in use"); return; } var progress = await this.ShowProgressAsync($"Drop database {dbName}", "Please wait..."); progress.SetIndeterminate(); try { using (IMsSqlMapper mapper = new MsSqlMapper()) { await Task.Factory.StartNew(() => mapper.DropDatabase(dbName)); await DatabaseConnectionSidebar.LoadMsSqlData(true); await progress.CloseAsync(); await this.ShowMessageAsync("Drop database", $"Database {dbName} dropped successfully"); } } catch (SqlException ex) { await progress.CloseAsync(); await this.ShowMessageAsync("Drop database", ex.Message); } }
/// <summary> /// Create new DB - MS Sql Server only /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> private async void DatabaseConnectionSidebarOnCreateMsSqlDatabase(object sender, System.EventArgs eventArgs) { string name = await this.ShowInputAsync("Create database", "Database name"); if (name == null || name.Equals(string.Empty)) { return; } try { using (IMsSqlMapper mapper = new MsSqlMapper()) { mapper.CreateDatabase(name); await DatabaseConnectionSidebar.LoadMsSqlData(true); } } catch (SqlException exc) { await this.ShowMessageAsync("Create database", exc.Message); } }
/// <summary> /// Connect to MS SQL Server /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void ConnectToMsSql_OnExecuted(object sender, ExecutedRoutedEventArgs e) { await DiagramFacade.CloseDiagramsOnDisconnect(this); SessionProvider.Instance.Disconnect(); DatabaseConnectionSidebar.HideDatabaseStackPanels(); ProgressDialogController progressDialogController = null; Func <ProgressDialogController, Task> closeProgress = async t => { if (t != null) { if (t.IsOpen) { await t.CloseAsync(); } } }; try { progressDialogController = await this.ShowProgressAsync("Please wait", "Connecting to server...", false, new MetroDialogSettings() { AnimateShow = false, AnimateHide = false }); progressDialogController.SetIndeterminate(); MsSqlDatabase db = new MsSqlDatabase(); string name = null, pass = null; bool integratedSecurity = true; var server = MsSqlServerNameTextBox.Text; if (WinAuthSwitch.IsChecked != null) { integratedSecurity = !WinAuthSwitch.IsChecked.Value; } if (!integratedSecurity) { name = MsSqlUsernameTextBox.Text; pass = MsSqlPasswordBox.Password; } await db.BuildSession(server, integratedSecurity, name, pass); await closeProgress(progressDialogController); await this.ShowMessageAsync("Connected", $"Successfuly connected to {SessionProvider.Instance.ServerName}"); var flyout = Flyouts.Items[0] as Flyout; if (flyout != null) { flyout.IsOpen = !flyout.IsOpen; } await DatabaseConnectionSidebar.LoadMsSqlData(); } catch (SqlException exception) { await closeProgress(progressDialogController); await this.ShowMessageAsync("Connection error", exception.Message); SessionProvider.Instance.ConnectionType = ConnectionType.None; } }
private async void ConnectToMsSqlServerOwnConnString_OnExecuted(object sender, ExecutedRoutedEventArgs e) { var example = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Init;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True"; var res = await this.ShowInputAsync("Connection string", $"Use customized connection string \n (Example: {example})"); if (res != null) { await DiagramFacade.CloseDiagramsOnDisconnect(this); SessionProvider.Instance.Disconnect(); DatabaseConnectionSidebar.HideDatabaseStackPanels(); ProgressDialogController progressDialogController = null; Func <ProgressDialogController, Task> closeProgress = async t => { if (t != null) { if (t.IsOpen) { await t.CloseAsync(); } } }; try { progressDialogController = await this.ShowProgressAsync("Please wait", "Connecting to server...", false, new MetroDialogSettings() { AnimateShow = false, AnimateHide = false }); progressDialogController.SetIndeterminate(); var db = new MsSqlDatabase(); await db.TryToConnectToServer(res); SessionProvider.Instance.OwnConnectionString = res; SessionProvider.Instance.UseOwnConnectionString = true; SessionProvider.Instance.ConnectionType = ConnectionType.SqlServer; await closeProgress(progressDialogController); await this.ShowMessageAsync("Connected", $"Successfuly connected to server"); var flyout = Flyouts.Items[0] as Flyout; if (flyout != null) { flyout.IsOpen = !flyout.IsOpen; } await DatabaseConnectionSidebar.LoadMsSqlData(); } catch (SqlException exception) { await closeProgress(progressDialogController); await this.ShowMessageAsync("Connection error", exception.Message); SessionProvider.Instance.ConnectionType = ConnectionType.None; } catch (ArgumentException) { await closeProgress(progressDialogController); await this.ShowMessageAsync("Connection error", "Connection string is not valid"); SessionProvider.Instance.ConnectionType = ConnectionType.None; } } }