C# 那里';使用double和im有什么问题吗?

C# 那里';使用double和im有什么问题吗?,c#,mysql,integer,double,C#,Mysql,Integer,Double,我想给一个整数加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.T

我想给一个整数加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行


我不知道如何解决这个问题,请帮帮我看来,你在这方面很可能有问题

   textBox4.Text = mesai.ToString() + maaş.ToString();
想象一下,当
maaş
4.1
时,
mesai
3.5
:您将在
textBox4.Text
中有
3.54.1
,它不是有效的
双值。
你可能是说

   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();
不要硬编码查询,而是将其参数化


使用SQL语句中的参数和
cmd.parameters.AddWithValue
将其值添加到命令中。这不仅可以防止SQL注入,还可以避免您遇到的区域性敏感格式问题。最后,您的SQL中似乎有许多语法错误;在将该语句复制到C代码之前,请尝试在MySQL Workbench中获得正确的语句。
   ... 

   // 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();
   } 
   ...