Эта проблема вызвана неявным преобразованием в строку, когда вы вызываете double.Parse, а затем объединяете результат обратно в текст sql. Это требует, чтобы компилятор представил двойное значение в виде строки, и он будет использовать текущую культуру для выполнения преобразования. Конечно, результат не соответствует ожидаемому MySql двойному значению.
Более того, использование конкатенации строк для построения команд sql приводит к Sql взломам инъекции . Очень неприятная проблема, которой следует избегать. Всегда.
Итак, давайте попробуем добавить код для решения этих проблем
// A parameterized string without any concatenation from user input
string lifeQuery = @"insert into lifeinsurance
values( null, @surname, @sum, @price)";
MySqlCommand cmd = new MySqlCommand(lifeQuery, connection);
// Add the parameters with value for each placeholder in string
cmd.Parameters.AddWithValue("@surname", surname.Text + "." + pesel.Text);
// Parse the user input as a double using the current culture to correctly
// interpret the comma as decimal separator.
// Note that here I have no check on the correctness of the input. If your
// user cannot be trusted to type a valid double number then you should use
// the double.TryParse approach separating these lines from the actual check
cmd.Parameters.AddWithValue("@sum", double.Parse(lifeInsSumTB.Text, CultureInfo.CurrentCulture));
cmd.Parameters.AddWithValue("@price", double.Parse(lifeInsPriceTB.Text, CultureInfo.CurrentCulture));
cmd.ExecuteNonQuery();