Exemplo n.º 1
0
 private void ShowPlanButton_Click(object sender, RoutedEventArgs e)
 {
     if (string.IsNullOrWhiteSpace(SqlText))
     {
         return;
     }
     DataConnectionHelper.LogUsage("EditorShowPlan");
     try
     {
         using (var repository = RepositoryHelper.CreateRepository(DatabaseInfo))
         {
             string sql      = GetSqlFromSqlEditorTextBox();
             string showPlan = repository.ParseSql(sql);
             try
             {
                 TryLaunchSqlplan(showPlan, true);
             }
             catch (Exception ex)
             {
                 DataConnectionHelper.SendError(ex, DatabaseType.SQLCE35);
             }
         }
     }
     catch (Exception sqlException)
     {
         ParseSqlErrorToResultsBox(RepositoryHelper.CreateEngineHelper(DatabaseInfo.DatabaseType).FormatError(sqlException));
     }
 }
Exemplo n.º 2
0
        private async void ExecuteSqlScriptInEditor()
        {
            try
            {
                StartQuerying();
                using (var repository = Helpers.RepositoryHelper.CreateRepository(DatabaseInfo))
                {
                    var sql           = GetSqlFromSqlEditorTextBox();
                    var schemaChanged = false;
                    if (sql.Length == 0)
                    {
                        return;
                    }

                    var sbSql = new StringBuilder(sql);
                    sbSql = sbSql.Replace("\r", " \r");
                    sbSql = sbSql.Replace("GO  \r", "GO\r");
                    sql   = sbSql.Replace("GO \r", "GO\r").ToString();

                    var sw = new Stopwatch();
                    sw.Start();

                    var dataset = await Task.Run(()
                                                 // ReSharper disable once AccessToDisposedClosure
                                                 => repository.ExecuteSql(sql, out schemaChanged, _ignoreDdlErrors));

                    sw.Stop();
                    FormatTime(sw);
                    if (dataset == null)
                    {
                        return;
                    }
                    ParseDataSetResultsToResultsBox(dataset);
                    if (!schemaChanged)
                    {
                        return;
                    }
                    ExplorerControl?.RefreshTables(DatabaseInfo);
                }
            }
            catch (Exception sqlException)
            {
                ParseSqlErrorToResultsBox(
                    RepositoryHelper.CreateEngineHelper(DatabaseInfo.DatabaseType).FormatError(sqlException));
            }
            finally
            {
                StopQuerying();
            }
        }
Exemplo n.º 3
0
        private async void ExecuteWithPlanButton_Click(object sender, RoutedEventArgs e)
        {
            DataConnectionHelper.LogUsage("EditorExecuteWithPlan");
            if (string.IsNullOrWhiteSpace(SqlText))
            {
                return;
            }
            try
            {
                StartQuerying();
                using (var repository = Helpers.RepositoryHelper.CreateRepository(DatabaseInfo))
                {
                    var       sql      = GetSqlFromSqlEditorTextBox();
                    string    showPlan = string.Empty;
                    Stopwatch sw       = new Stopwatch();
                    sw.Start();
                    var dataset = await Task.Run(()
                                                 // ReSharper disable once AccessToDisposedClosure
                                                 => repository.ExecuteSql(sql, out showPlan));

                    sw.Stop();
                    FormatTime(sw);
                    try
                    {
                        if (dataset != null)
                        {
                            ParseDataSetResultsToResultsBox(dataset);
                        }

                        TryLaunchSqlplan(showPlan, false);
                    }
                    catch (Exception ex)
                    {
                        DataConnectionHelper.SendError(ex, DatabaseType.SQLCE35);
                    }
                }
            }
            catch (Exception ex)
            {
                ParseSqlErrorToResultsBox(
                    RepositoryHelper.CreateEngineHelper(DatabaseInfo.DatabaseType).FormatError(ex));
            }
            finally
            {
                StopQuerying();
            }
        }
Exemplo n.º 4
0
 private bool TestConnection(bool showMessage)
 {
     try
     {
         if (_createDb)
         {
             if (!System.IO.File.Exists(dataSourceTextBox.Text))
             {
                 var engineHelper = RepositoryHelper.CreateEngineHelper(DbType);
                 engineHelper.CreateDatabase(_connectionString);
             }
         }
         using (Helpers.RepositoryHelper.CreateRepository(new DatabaseInfo {
             ConnectionString = _connectionString, DatabaseType = DbType
         }))
         {
             if (showMessage)
             {
                 EnvDteHelper.ShowMessage("Connection OK!");
             }
             else
             {
                 DialogResult = true;
             }
         }
         return(true);
     }
     catch (Exception ex)
     {
         if (ex.Message.Contains("Please upgrade using SqlCeEngine.Upgrade() method") && DbType == DatabaseType.SQLCE40)
         {
             if (EnvDteHelper.ShowMessageBox("This database file is from an earlier version,\n\rwould you like to Upgrade it?\n\r(A copy of the original file will be named .bak)"
                                             , Microsoft.VisualStudio.Shell.Interop.OLEMSGBUTTON.OLEMSGBUTTON_YESNO
                                             , Microsoft.VisualStudio.Shell.Interop.OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_SECOND
                                             , Microsoft.VisualStudio.Shell.Interop.OLEMSGICON.OLEMSGICON_WARNING) == System.Windows.Forms.DialogResult.Yes)
             {
                 var bakFile = dataSourceTextBox.Text + ".bak";
                 var go      = true;
                 try
                 {
                     if (System.IO.File.Exists(bakFile))
                     {
                         if (EnvDteHelper.ShowMessageBox(string.Format("{0} already exists, do you wish to overwrite it?", bakFile)
                                                         , Microsoft.VisualStudio.Shell.Interop.OLEMSGBUTTON.OLEMSGBUTTON_YESNO
                                                         , Microsoft.VisualStudio.Shell.Interop.OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_SECOND
                                                         , Microsoft.VisualStudio.Shell.Interop.OLEMSGICON.OLEMSGICON_WARNING) == System.Windows.Forms.DialogResult.Yes)
                         {
                             System.IO.File.Delete(bakFile);
                         }
                         else
                         {
                             go = false;
                         }
                     }
                     if (go)
                     {
                         System.IO.File.Copy(dataSourceTextBox.Text, dataSourceTextBox.Text + ".bak");
                         var helper = new SqlCeScripting.SqlCeHelper4();
                         helper.UpgradeTo40(_connectionString);
                         DialogResult = true;
                     }
                 }
                 catch (Exception ex2)
                 {
                     DataConnectionHelper.SendError(ex2, DbType, false);
                     return(false);
                 }
             }
         }
         else
         {
             DataConnectionHelper.SendError(ex, DbType, false);
             return(false);
         }
     }
     return(true);
 }