vijay_bale Ответов: 2

Резервное копирование базы данных SQL неверный синтаксис


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

Вот мой код
string database = con.Database.ToString();
try
{
    if (textBox1.Text == string.Empty)
    {
        MessageBox.Show("Please Enter Path");
    }
    else
    {
        string cmd = ("BACKUP DATABASE [" + database + "] TO DISK '" + textBox1.Text + "\\" + "Database" +"-"+ DateTime.Now.ToString("yyyy-MM-dd--HHmmss")+".bak'");
        using (SqlCommand command = new SqlCommand(cmd, con))
        {
            if (con.State != ConnectionState.Open)
            {
                con.Open();
            }
            command.ExecuteNonQuery();
            con.Close();
            MessageBox.Show("Backup Completed Successfully");
        }
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}


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

Я не могу отследить эту ошибку.

2 Ответов

Рейтинг:
18

OriginalGriff

Попробовать это: Резервное копирование базы данных SQL на языке C#[^]

И никогда не используйте SQL таким образом! Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы. Уязвимый код SQL-инъекции при попытке резервного копирования? Это просто глупо и опасно...


vijay_bale

С этим все в порядке. Я пытаюсь это сделать. Но вот где синтаксическая ошибка. Я хочу знать, что даже мой метод письма ошибочен. Ты можешь мне это сказать? Я не буду повторять это в будущем.

OriginalGriff

Посмотрите, как вы это заметили , но проверьте остальную часть вашего кода: если вы оставите один экземпляр, в котором пользователь будет вводить данные непосредственно в вашу БД, кто-то удалит вашу БД за вас...

vijay_bale

Я удалил этот код. Я делаю как та ссылка, которую вы дали.

Рейтинг:
1

vijay_bale

Наконец я проследил. Я пропустил ввод знака " = " после диска.
строка cmd = ("резервное копирование базы данных ["+database +"] на диск=