Esempio n. 1
0
        private void SaveAndExit()
        {
            if (String.IsNullOrEmpty(tbServer.Text))
            {
                MessageBox.Show("Сервер не введён");
                return;
            }
            if (rbUseSQL.IsChecked == true)
            {
                if (String.IsNullOrEmpty(tbUser.Text))
                {
                    MessageBox.Show("Имя пользователя не введено");
                    return;
                }
                if (String.IsNullOrEmpty(tbPassword.Password))
                {
                    MessageBox.Show("Пароль не введён");
                    return;
                }
            }
            if (String.IsNullOrEmpty(cbDatabase.Text))
            {
                MessageBox.Show("База данных не выбрана");
                return;
            }

            if (rbUseSQL.IsChecked == true)
            {
                cnToRet = AccountForm.CreateConnection(tbServer.Text, tbUser.Text, tbPassword.Password, cbDatabase.Text);
            }
            else
            {
                cnToRet = AccountForm.CreateConnection(tbServer.Text, cbDatabase.Text);
            }

            SaveSettings();
            this.DialogResult = true;
            this.Close();
        }
Esempio n. 2
0
        private void FillDatabases(object o)
        {
            if (!(o is CnData))
            {
                return;
            }
            CnData        cnData = (CnData)o;
            SqlConnection cn     = null;

            try
            {
                if (cnData.UseSql)
                {
                    cn = AccountForm.CreateConnection(cnData.Server, cnData.User, cnData.Password, "master");
                }
                else
                {
                    cn = AccountForm.CreateConnection(cnData.Server, "master");
                }
                if (cn.State != ConnectionState.Open)
                {
                    cn.Open();
                }
                try
                {
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection  = cn;
                    cmd.CommandText = "SELECT name FROM sysdatabases(NOLOCK) ORDER BY name";
                    List <string> dbList = new List <string>();
                    var           rdr    = cmd.ExecuteReader();
                    try
                    {
                        while (rdr.Read())
                        {
                            dbList.Add(rdr[0].ToString());
                        }
                    }
                    finally { rdr.Close(); }
                    foreach (string str in dbList)
                    {
                        try
                        {
                            if (cnData.CheckDB)
                            {
                                cmd.Connection.ChangeDatabase(str);
                                cmd.CommandText = "SELECT COUNT(*) FROM sysobjects(NOLOCK) WHERE name='CompetitionData' AND type='U'";
                                object oTmp = cmd.ExecuteScalar();
                                if (oTmp == null || oTmp == DBNull.Value)
                                {
                                    continue;
                                }
                                if (Convert.ToInt32(oTmp) < 1)
                                {
                                    continue;
                                }
                                cmd.CommandText = @"SELECT COUNT(*) FROM syscolumns c(NOLOCK)
                                          JOIN sysobjects obj(NOLOCK) ON obj.id = c.id
                                         WHERE obj.name = 'CompetitionData'
                                           AND obj.type = 'U'
                                           AND c.name = 'DB_ID'";
                                oTmp            = cmd.ExecuteScalar();
                                if (oTmp == null || oTmp == DBNull.Value)
                                {
                                    continue;
                                }
                                if (Convert.ToInt32(oTmp) < 1)
                                {
                                    continue;
                                }
                                cmd.CommandText = "SELECT DB_ID FROM CompetitionData(NOLOCK)";
                                oTmp            = cmd.ExecuteScalar();
                                if (oTmp == null || oTmp == DBNull.Value || oTmp.ToString() != AccountForm.DB_ID)
                                {
                                    continue;
                                }
                            }

                            if (cbDatabase.Dispatcher.CheckAccess())
                            {
                                ComboBoxItem item = new ComboBoxItem();
                                item.Content = str;
                                cbDatabase.Items.Add(item);
                            }
                            else
                            {
                                cbDatabase.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
                                                                  (ParameterizedThreadStart) delegate(object obj)
                                {
                                    if (!(obj is string))
                                    {
                                        return;
                                    }
                                    ComboBoxItem it = new ComboBoxItem();
                                    it.BeginInit();
                                    it.Content = obj as string;
                                    it.EndInit();
                                    cbDatabase.Items.Add(it);
                                }, str);
                            }
                        }
                        catch { }
                    }
                }
                finally { cn.Close(); }
            }
            catch (Exception ex)
            {
                if (this.Dispatcher.CheckAccess())
                {
                    MessageBox.Show(this, "Ошибка загрузки списка баз данных:\r\n" +
                                    ex.Message, "Ошибка загрузки");
                }
                else
                {
                    this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
                                                (ThreadStart) delegate
                    {
                        MessageBox.Show(this, "Ошибка загрузки списка баз данных:\r\n" +
                                        ex.Message, "Ошибка загрузки");
                    });
                }
            }
        }