コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
        /// <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;
            }
        }
コード例 #5
0
        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;
                }
            }
        }