Есть проблема с использованием double, и я где-то застрял? - PullRequest
0 голосов
/ 10 сентября 2018

Я хочу добавить 0.50 к целому числу, только я в замешательстве. Я не знаю, как это сделать. Там есть код;

if (checkBox1.Checked)
{
    keko.Open();

    double mesai = Convert.ToDouble(textBox4.Text);
    mesai = mesai + 0.50;
    double maaş = Convert.ToDouble(textBox4.Text);
    maaş += 1;
    textBox4.Text = mesai.ToString() + maaş.ToString();

    MySqlCommand cmd = new MySqlCommand(
      "Update calisanlist Set Gun '" + textBox4.Text + "' where (Adı,Soyadı) '" + textBox1.Text + "','"+textBox2.Text+"'", 
       keko);

    cmd.ExecuteNonQuery();

    keko.Close();

Под кнопкой есть флажок. Если я нажимаю кнопку без флажка, он добавляет себя 1 Хорошо, здесь нет проблем. Но, когда я ставлю флажок и нажимаю кнопку, у меня появляется сообщение об ошибке.

MySql.Data.MySqlClient.MySqlException:

'У вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного использования синтаксиса около '' 7,58 ', где (Adı, Soyadı)' Egemen ',' Ören '' на линии 1 '.

Я не знаю, как решить, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 10 сентября 2018

Кажется, у вас вполне может быть проблема в

   textBox4.Text = mesai.ToString() + maaş.ToString();

Представьте, что mesai равно 3.5, когда maaş равно 4.1: у вас будет 3.54.1 в textBox4.Text, которое не является действительным double значением. Вы, наверное, имеете в виду

   double mesai = Convert.ToDouble(textBox4.Text) + 0.5;
   //TODO: check isn't it a typo? Both mesai and maaş are from the same textBox4.Text
   double maaş = Convert.ToDouble(textBox4.Text) + 1;

   textBox4.Text = (mesai + maaş).ToString();

Не жесткий код запрос, но параметризация это

   ... 

   // Keep sql readable
   // and parameterized
   string sql = 
     @"update calisanlist
          set Gun = @prm_Gun
        where Adı = @prm_Adi and
              Soyadı = @prm_Soyadı";  

   // wrap IDisposable into "using"
   using (MySqlCommand cmd = new MySqlCommand(sql, keko)) {
     // I don't know underlying database types, that's why I've put AddWithValue
     //TODO: change syntax to cmd.Parameters.Add(name, datatype).Value = ...
     cmd.Parameters.AddWithValue("@prm_Gun", Convert.ToDouble(textBox4.Text));
     cmd.Parameters.AddWithValue("@prm_Adi", textBox1.Text);
     cmd.Parameters.AddWithValue("@prm_Soyadı", textBox2.Text); 

     cmd.ExecuteNonQuery();
   } 
   ... 
...