Example #1
0
        private void btnCreateDb_Click(object sender, EventArgs e)
        {
            try
            {

                var monetConnection = DatabaseForm.GetDatabaseInfo(_serverName);

                if (monetConnection == null)
                    return;

                _db = new MonetDatabase(monetConnection.ToString());

                if (_db.StatusDatabase() == DatabaseStatus.Started)
                {
                    MessageBox.Show(@"Database already created", @"Database", MessageBoxButtons.OK, MessageBoxIcon.Stop);

                    return;
                }

                _db.CreateDatabase();

                LoggerHelper.Write(LoggerOption.Info, "Database {0} created", _db.ConnectionInfo.Database);
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message, @"Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);

                LoggerHelper.Write(LoggerOption.Error, "Error: {0}", exp.Message);
            }
        }
Example #2
0
        private void btnCopy_Click(object sender, EventArgs e)
        {
            if (cbxSQLSchema.SelectedIndex == -1)
                return;

            var db = new MonetDatabase(_connectionInfo.ToString());
            var cols = lsvSQLCols.CheckedItems.Count > 0
                ? string.Join(",",
                    lsvSQLCols.CheckedItems.Cast<ListViewItem>()
                        .Select(
                            s => string.Format("{1}{0}{2}", s.Text, _dataConnector.OpenScope, _dataConnector.CloseScope)))
                : "*";
            var query = string.IsNullOrWhiteSpace(_tableInfo.Schema)
                ? string.Format("SELECT {0} FROM {2}{1}{3} ", cols, _tableInfo.Table, _dataConnector.OpenScope,
                    _dataConnector.CloseScope)
                : string.Format("SELECT {0} FROM {3}{1}{4}.{3}{2}{4} ", cols, _tableInfo.Schema, _tableInfo.Table,
                    _dataConnector.OpenScope, _dataConnector.CloseScope);
            var reader = _dataConnector.ExecuteReader(query);
            var batchSize = Convert.ToInt32(nudBatchSize.Value);

            var prog = TaskbarManager.Instance;
            var stopWatch = new Stopwatch();
            stopWatch.Start();

            _worker.DoWork += delegate (object o, DoWorkEventArgs args)
            {
                prog.SetProgressState(TaskbarProgressBarState.Normal);

                var bulkCopy = new MonetBulkCopy(db)
                {
                    BatchSize = batchSize,
                    NotifyAfter = batchSize
                };

                bulkCopy.RowsCopied += delegate (object o1, RowsCopiedEventArgs args1)
                {
                    if (args1.Abort)
                        return;

                    if (_worker.CancellationPending)
                    {
                        args.Cancel = true;

                        throw new OperationCanceledException();
                    }
                    var percent = Math.Round(100 * (decimal)args1.RowsCopied / _tableInfo.RowsCount, 3,
                        MidpointRounding.AwayFromZero);
                    var userState = new KeyValuePair<decimal, long>(percent, args1.RowsCopied);

                    _worker.ReportProgress(0, userState);
                };

                bulkCopy.Upload(_tableInfo.Schema, _tableInfo.Table, reader);
            };
            _worker.ProgressChanged += delegate (object o, ProgressChangedEventArgs args)
            {
                var userState = (KeyValuePair<decimal, long>)args.UserState;

                lblCopyElapsed.Text = $"{stopWatch.Elapsed:g}";
                pbrCopyStatus.Value = (int)userState.Key;

                prog.SetProgressValue((int)userState.Key, pbrCopyStatus.Maximum);

                Thread.Sleep(100);
            };
            _worker.RunWorkerCompleted += delegate (object o, RunWorkerCompletedEventArgs args)
            {
                if (args.Cancelled)
                {
                    MessageBox.Show(@"Bulk operation canceled!", @"Canceled", MessageBoxButtons.OK,
                        MessageBoxIcon.Warning);

                    LoggerHelper.Write(LoggerOption.Warning, @"Bulk operation canceled!");
                }
                else if (args.Error != null)
                {
                    MessageBox.Show(args.Error.Message, @"Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    LoggerHelper.Write(LoggerOption.Error, "Error: {0}", args.Error.Message);
                }
                else
                {
                    MessageBox.Show(@"Bulk operation completed", @"Completed", MessageBoxButtons.OK,
                        MessageBoxIcon.Information);

                    LoggerHelper.Write(LoggerOption.Info, @"Bulk operation completed");
                }

                stopWatch.Stop();
                prog.SetProgressState(TaskbarProgressBarState.NoProgress);

                pbrCopyStatus.Value = 0;
            };

            _worker.RunWorkerAsync();
        }
Example #3
0
        private void sqlConsoleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            _db = new MonetDatabase(_connectionInfo.ToString());

            try
            {
                var model = MonetConfigurationHelper.GetConfiguration(Path.Combine(IoHelper.CurrentRoot, MonetSettings.MonetConfigurationFile));
                var file = Path.Combine(model.DbInstallerDir, "bin\\mclient.exe");
                var args =
                    $"-h \"{_db.ConnectionInfo.Host}\" -p {_db.ConnectionInfo.GetPort()} -d \"{_db.ConnectionInfo.Database}\" -u \"{_db.ConnectionInfo.UserName}\" -L \"{Path.Combine(model.TempDir)}\"";

                LoggerHelper.Write(LoggerOption.Info, "Starting MonetDB client session...");

                DiagnosticHelper.ShowWindowApplication(file, args);

                LoggerHelper.Write(LoggerOption.Info, "MonetDB client session closed");
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message, @"Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);

                LoggerHelper.Write(LoggerOption.Error, "Error: {0}", exp.Message);
            }
        }
Example #4
0
        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            _db = new MonetDatabase(_connectionInfo.ToString());

            try
            {
                var fileName = AskSaveFile();

                if (string.IsNullOrWhiteSpace(fileName))
                    return;

                var model = MonetConfigurationHelper.GetConfiguration(Path.Combine(IoHelper.CurrentRoot, MonetSettings.MonetConfigurationFile));
                var file = Path.Combine(model.DbInstallerDir, "bin\\msqldump.exe");
                var args =
                    $"-h \"{_db.ConnectionInfo.Host}\" -p {_db.ConnectionInfo.GetPort()} -d \"{_db.ConnectionInfo.Database}\" -u \"{_db.ConnectionInfo.UserName}\"";

                LoggerHelper.Write(LoggerOption.Info, "Database dumping started...");

                DiagnosticHelper.ShowWindowApplicationEx(file, args, fileName, null, null);

                LoggerHelper.Write(LoggerOption.Info, "Database dumped");
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message, @"Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);

                LoggerHelper.Write(LoggerOption.Error, "Error: {0}", exp.Message);
            }
        }
Example #5
0
        private void Init()
        {
            _worker = new BackgroundWorker
            {
                WorkerSupportsCancellation = true,
                WorkerReportsProgress = true
            };
            _worker.DoWork += delegate (object sender, DoWorkEventArgs args)
            {
                _db = new MonetDatabase(ConnectionInfo.ToString());

                args.Result = _db.GetDatabases();
            };
            _worker.RunWorkerCompleted += delegate (object sender, RunWorkerCompletedEventArgs args)
            {
                if (dgwDbList.Columns.Count == 0)
                    return;

                var databases = (List<MonetDatabaseInfo>)args.Result;

                dgwDbList.Rows.Clear();

                foreach (var database in databases)
                {
                    dgwDbList.Rows.Add(new object[]
                        {
                            database.Database,
                            IoHelper.ToFileSize(database.Size),
                            database.Status
                        });
                }

                dgwDbList.ClearSelection();

            };
            _timer = new Timer
            {
                Enabled = true,
                Interval = 10000
            };
            _timer.Tick += delegate (object sender, EventArgs args)
            {
                if (_worker.IsBusy)
                    return;

                _worker.RunWorkerAsync();
            };
        }
Example #6
0
        private void btnLoadDb_Click(object sender, EventArgs e)
        {
            try
            {

                var connectionInfo = GetConnectionString();

                if (string.IsNullOrWhiteSpace(connectionInfo))
                    return;

                _db = new MonetDatabase(connectionInfo);

                if (_db.StatusDatabase() == DatabaseStatus.Started)
                {
                    MessageBox.Show(@"Database already loaded", @"Database", MessageBoxButtons.OK, MessageBoxIcon.Stop);

                    return;
                }

                _db.LoadDatabase();

                LoggerHelper.Write(LoggerOption.Info, "Database {0} loaded", _db.ConnectionInfo.Database);
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message, @"Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);

                LoggerHelper.Write(LoggerOption.Error, "Error: {0}", exp.Message);
            }
        }
Example #7
0
        private void btnKillDb_Click(object sender, EventArgs e)
        {
            try
            {
                var connectionString = GetConnectionString();

                if (string.IsNullOrWhiteSpace(connectionString))
                    return;

                _db = new MonetDatabase(connectionString);

                if (_db.StatusDatabase() == DatabaseStatus.None)
                {
                    MessageBox.Show(@"Database is not exists", @"Database", MessageBoxButtons.OK, MessageBoxIcon.Stop);

                    return;
                }

                _db.KillDatabase();

                LoggerHelper.Write(LoggerOption.Warning, "Database {0} killed", _db.ConnectionInfo.Database);
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message, @"Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);

                LoggerHelper.Write(LoggerOption.Error, "Error: {0}", exp.Message);
            }
        }
Example #8
0
        private void btnDropDb_Click(object sender, EventArgs e)
        {
            try
            {
                var connectionString = GetConnectionString();

                if (string.IsNullOrWhiteSpace(connectionString))
                    return;

                _db = new MonetDatabase(connectionString);

                if (_db.StatusDatabase() == DatabaseStatus.None)
                {
                    MessageBox.Show(@"Database is not exists", @"Database", MessageBoxButtons.OK, MessageBoxIcon.Stop);

                    return;
                }

                if (
                    MessageBox.Show(@"Do you really want to drop this database?(y/n)", @"Drop", MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question) != DialogResult.Yes)
                    return;

                _db.DropDatabase();

                LoggerHelper.Write(LoggerOption.Warning, "Database {0} droped", _db.ConnectionInfo.Database);
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message, @"Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);

                LoggerHelper.Write(LoggerOption.Error, "Error: {0}", exp.Message);
            }
        }
Example #9
0
 /// <summary>
 /// </summary>
 /// <param name="db"></param>
 public MonetBulkCopy(MonetDatabase db)
 {
     _db = db;
 }