Обновление базы данных sql без пробелов - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь найти способ, чтобы моя программа не обновляла базу данных sql, если некоторые поля пустые, когда я нажимаю форму отправки. Прямо сейчас, когда я отправляю его в базу данных sql, если поля пустые, он обновляется как пустой. Есть ли способ для моего кода не вести себя так?

Спасибо

        //field names in the table
        string update = @"UPDATE Master_List
                        SET Date_Complete1 = @Date_Complete1, Pass_Fail = @Pass_Fail, CRC_Number = @CRC_Number, QN_Number = @QN_Number, Notes = @Notes WHERE Job_Number = @Job_Number"; //parameter names

        using (SqlConnection conn = new SqlConnection(connString)) //using allows disposing of low level resources
        {
            try
            {
                conn.Open();//open new connection
                command = new SqlCommand(update, conn); // create the new sql command object
                                                        // Read value from form and save to the table
                command.Parameters.AddWithValue(@"Job_Number", jobTxt.Text);
                command.Parameters.AddWithValue(@"Pass_Fail", comboBox1.Text);
                command.Parameters.AddWithValue(@"Date_Complete1", opBox1.Text);
                command.Parameters.AddWithValue(@"CRC_Number", crcTxt.Text);
                command.Parameters.AddWithValue(@"QN_Number", qnTxt.Text);
                command.Parameters.AddWithValue(@"Notes", notesTxt.Text);
                command.ExecuteNonQuery(); // Push form into the table
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message); // If there is something wrong, show the user message
            }
        }

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Если вы хотите обновить некоторые поля, если одно или несколько полей не заполнены, то вы можете сделать это:

UPDATE Master_List
SET Date_Complete1 = ISNULL(NULLIF(@Date_Complete1,''),Date_Complete1),
    Pass_Fail = ISNULL(NULLIF(@Pass_Fail,''),Pass_Fail),
    CRC_Number = ISNULL(NULLIF(@CRC_Number,''),CRC_Number),
    QN_Number = ISNULL(NULLIF(@QN_Number,''),QN_Number),
    Notes = ISNULL(NULLIF(@Notes,''),Notes)
WHERE Job_Number = @Job_Number

Если вы не хотите, чтобы какие-либо поля обновлялись, если какие-либо поляпусто, затем просто отметьте их в операторе if.

0 голосов
/ 23 октября 2019

Если вы собираетесь проверить, что вы должны изменить свойства поля базы данных, чтобы выполнить эту задачу. если вы хотите сделать это с некоторым кодом, вы должны добавить что-то вроде этого:

   bool val = true;
      if (jobTxt.Text.Trim() == string.Empty) {
          val = false;
      }
if(val==true){
    command.ExecuteNonQuery();
}
else{
MessageBox.Show("Some field is empty")
}

и повторить предложение, если для каждого текстового поля вы хотите сделать проверку. Я надеюсь, что это поможет вам. Вы можете сказать, какое текстовое поле является пустым по остальным предложениям в текстовом поле.

0 голосов
/ 23 октября 2019

Выполните проверки ваших входных данных до того, как ваш sql-код будет выполнен.

просто выйдите из функции, если какие-либо проверки, которые вы хотите выполнить, не удаются, например,

If(string.IsNullOrEmpty(variable to check)) ... Returnили настроить сообщение об ошибке для пользователя ...

Или выполнить некоторую логику, чтобы показать пользователю, что вы не хотите пустые поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...