Member 11859517 Ответов: 1

Как удалить данные 1 или n-летней давности с текущей даты из базы данных (SQL server) в C#?


Я хочу удалить данные из базы данных, которые старше 1 или n лет(пользователь введет год),
как это сделать, помогите мне.
заранее спасибо.
сушил

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

Я ищу в google, но не получаю никакого решения, я не знаю, как это сделать,

1 Ответов

Рейтинг:
5

OriginalGriff

Попробуй:

int year;
if (!int.TryParse(userInputTextBox.Text, out year))
   {
   // Report problem to user
   ...
   return;
   }
DateTime olderThan = DateTime.Now.Date.AddYears(-year);
using (SqlConnection con = new SqlConnection(strConnect))
    {
    con.Open();
    using (SqlCommand cmd = new SqlCommand("DELETE FROM myTable WHERE dateColumn < @LIM", con))
        {
        cmd.Parameters.AddWithValue("@LIM", olderThan);
        cmd.ExecuteNonQuery();
        }
    }


Member 11859517

спасибо,

на самом деле я хочу удалить эти изображения.

Member 11859517

Старше датавремя = Датавремя.Сейчас.Дата.AddYears (- год);
что это значит (- год), я не понимаю.

OriginalGriff

Что произойдет, если вы добавите отрицательное число?
int x =42;
х += -3;
Приставка.WriteLine(x);

Попробуй и увидишь...

Member 11859517

спасибо, я все понял.

OriginalGriff

Пожалуйста!

Member 11859517

плз, не могли бы вы рассказать мне о параметре @LIM?

OriginalGriff

Что вы хотите знать?

Member 11859517

почему мы используем параметр там? к сожалению я думаю, что его глупо ке. БТ фраки я не понял.

можно ли обойтись без использования параметров?

OriginalGriff

Вы используете параметр по двум причинам:
1) Так что вы можете отправить значение DateTime напрямую. Альтернативой является преобразование его в строку, но тогда вы оставляете место для SQL, чтобы неправильно истолковать значение: какая дата 01/02/03? Это могут быть США: 2 января 2003 года, Европа: 1 февраля 2013 года, Япония / ISO 3 февраля 2001 года ... если вы ошибетесь, это действительно может испортить вашу базу данных!
2) потому что это хорошая практика: вы никогда не должны объединять строки для формирования SQL-команды, потому что это может оставить вас широко открытыми для чего-то, называемого SQL-инъекцией, которая позволяет пользователям повреждать или уничтожать вашу базу данных, просто вводя текстовые поля. И это очень, очень легко для них сделать:
https://xkcd.com/327/
Прочтите его и не думайте, что это просто шутка.
Приобретите привычку всегда использовать параметры, и у вас не будет проблем - слишком легко впасть в плохие привычки, и их трудно сломать.

Member 11859517

большое вам спасибо, сэр...:)

OriginalGriff

Пожалуйста!