ishuishika Ответов: 2

Как решить неправильный синтаксис возле 'система'


Привет,

Я хочу получить резервные данные.Я также получаю правильное местоположение. Но когда я нажимаю кнопку резервного копирования, она показывает ошибку "
Incorrect Syntax near 'SystemTO'
- Я не знаю, где я ошибаюсь. Пожалуйста, помогите мне.
Здесь:
Button4 = кнопка резервного копирования
Button3 = кнопка просмотра

Что я уже пробовал:

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                connectionString = "Data Source = " + textBox1.Text + "; User Id = " + textBox2.Text + "; Password = " + textBox3.Text + "";
                con = new SqlConnection(connectionString);
                con.Open();
               // sql = "EXEC sp_databases";
                sql = "SELECT * FROM sys.databases d WHERE d.database_id>4";
                command = new SqlCommand(sql, con);
                reader = command.ExecuteReader();
                comboBox1.Items.Clear();
                while (reader.Read())
                {
                    comboBox1.Items.Add(reader[0].ToString());
                }
                    textBox1.Enabled = false;
                    textBox2.Enabled = false;
                    textBox3.Enabled = false;
                    button1.Enabled = false;
                    button2.Enabled = true;

                    comboBox1.Enabled = true;

                    button4.Enabled = true;
                    button5.Enabled = true;

                
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Enabled = true;
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            comboBox1.Enabled = false;
            button4.Enabled = false;
            button5.Enabled = false;
            button1.Enabled = true;

        }

        private void Backup_or_Restore_Data_Load(object sender, EventArgs e)
        {
            button2.Enabled = false;
            comboBox1.Enabled = false;
            button4.Enabled = false;
            button5.Enabled = false;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                if (comboBox1.Text.CompareTo("") == 0)
                {
                    MessageBox.Show("Please Select a Database");
                    return;
                }
                con = new SqlConnection(connectionString);
                con.Open();
                sql = "BACKUP DATABASE " + comboBox1.Text + " TO DISK = '" + textBox4.Text + "\\" + comboBox1.Text + "-" + DateTime.Now.Ticks.ToString() + ".bak'";
                command = new SqlCommand(sql, con);
                command.ExecuteNonQuery();
                MessageBox.Show("Successfully Database Backup Completed. ");
                }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog dlg = new FolderBrowserDialog();
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                textBox4.Text = dlg.SelectedPath;
            }

        }
                        
    }
}

CPallini

Нет 'система' вхождения в код.

ishuishika

Сэр,

Да, сэр, В программе нет SystemTo. Но я получаю ту же самую ошибку.

Richard MacCutchan

Где именно происходит ошибка?

F-ES Sitecore

Попробуй

sql = "резервное копирование базы данных [" + comboBox1.Text + "] на диск = '" + textBox4.Text + "\\" + comboBox1.Text + "-" + DateTime.Now.Ticks.Метод toString() + ".бак'";

Я добавил квадратные скобки вокруг имени базы данных

2 Ответов

Рейтинг:
2

Richard MacCutchan

Это, скорее всего, проблема:

sql = "BACKUP DATABASE " + comboBox1.Text + " TO DISK = '" + textBox4.Text + "\\" + comboBox1.Text + "-" + DateTime.Now.Ticks.ToString() + ".bak'";

Не следует использовать конкатенацию строк для создания инструкций SQL. Сначала захватите различные элементы данных и проверьте их перед использованием в команде.


Рейтинг:
0

GenJerDan

Попробуйте comboBox1.SelectedItem.ToString() вместо combobox1.Text

Хотя вы должны использовать параметры, а не строить строку в своем коде.


ishuishika

теперь я получаю ошибку как неправильный синтаксис рядом с "системой".
Я не знаю, откуда именно взялась эта ошибка

Richard MacCutchan

У вас есть вся информация, которой нет у нас. Итак, посмотрите на фактическую команду SQL, которую вы генерируете. Все ли поля корректны, есть ли в них какие-либо запрещенные символы и т. д. ? Попробуйте сделать базовый диагностический анализ для себя, прежде чем публиковать здесь.