Я хочу добавить 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
:
'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''7,58' where (Adı,Soyadı) 'Egemen','Ören'' at line 1'.
Я не знаю, как это решить, пожалуйста, помогите мне
Кажется, у вас вполне может быть проблема в
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();
}
...
Используйте параметры в своем операторе SQL и
cmd.Parameters.AddWithValue
, чтобы добавить их значения в команду. Это не только предотвращает SQL-инъекцию, но и позволяет избежать проблемы форматирования, связанной с языком и региональными параметрами, с которой вы сталкиваетесь. Наконец, в вашем SQL есть несколько синтаксических ошибок; попробуйте получить инструкцию прямо в MySQL Workbench, прежде чем копировать ее в свой код C#.