@deadspace12

Как исправить ошибку -"data truncate for column"?

это таблицы в базе данных
5fd36f8b5dc2a652295370.png
5fd36fa881cbd131946791.png
5fd36fb3e79c6915226183.png
и картинки с ошибками почему он не может распознать поле с форматом float и поле с форматом datetime
5fd3701faa05c897927597.jpeg
5fd37036369a7951436115.jpeg
вот код с ошибкой датойвремени
private void button1_Click(object sender, EventArgs e)
{
MySqlConnectionStringBuilder mysqlCSB;
mysqlCSB = new MySqlConnectionStringBuilder();
mysqlCSB.Server = "127.0.0.1";
mysqlCSB.Database = "vlados";
mysqlCSB.UserID = "root";
mysqlCSB.Password = "T2(!)3672+family";
using (MySqlConnection cn = new MySqlConnection(mysqlCSB.ConnectionString))
{
try
{
cn.Open();
string SInsSql = "Insert into servicesandbooking(idbooking, Databooking, id_orders, idstaff, idguests) Values(' { 0 } ',' { 1 } ',' { 2 } ',' { 3 } ',' { 4 } ')";
int idbooking = Convert.ToInt32(textBox1.Text);
DateTime Databooking = dateTimePicker1.Value;
int id_orders = Convert.ToInt32(textBox2.Text);
int idstaff = Convert.ToInt32(textBox3.Text);
int idguests = Convert.ToInt32(textBox4.Text);
string sInsSotr = string.Format(SInsSql, idbooking, Databooking, id_orders, idstaff, idguests);
MySqlCommand cmdIns = new MySqlCommand(sInsSotr, cn);
cmdIns.ExecuteNonQuery();
MessageBox.Show("Запись успешно вставлена !");
cn.Close();
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
}
}
и код с ошибкой поля типа float
private void button1_Click(object sender, EventArgs e)
{
MySqlConnectionStringBuilder mysqlCSB;
mysqlCSB = new MySqlConnectionStringBuilder();
mysqlCSB.Server = "127.0.0.1";
mysqlCSB.Database = "vlados";
mysqlCSB.UserID = "root";
mysqlCSB.Password = "T2(!)3672+family";
using (MySqlConnection cn = new MySqlConnection(mysqlCSB.ConnectionString))
{
try
{
cn.Open();
string SInsSql = "Insert into menu(id_orders, Nname, serving_size, cost, cooking_time) Values('{0}','{1}','{2}','{3}','{4}')";
int id_orders = Convert.ToInt32(textBox4.Text);
string Nname = textBox1.Text;
int serving_size = Convert.ToInt32(textBox2.Text);
int cost = Convert.ToInt32(textBox3.Text);
float cooking_time = float.Parse(textBox5.Text);
string sInsSotr = string.Format(SInsSql, id_orders, Nname, serving_size, cost, cooking_time);
MySqlCommand cmdIns = new MySqlCommand(sInsSotr, cn);
cmdIns.ExecuteNonQuery();
MessageBox.Show("Запись успешно вставлена !");
cn.Close();
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
}
}

помогите пожалуйста я не знаю где я мог ошибиться я дважды пересмотрел свой код и ничего не вижу
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@BorisKorobkov Куратор тега MySQL
Web developer
  1. Покажи структуру таблиц (типы полей).
  2. С помощью дебаггера или хотя бы MessageBox.Show() выясни, какие именно значения пытаешься вставить.
  3. Имена полей лучше писать с маленькой буквы.
  4. Возможно, у вещественного числа должен быть разделитель точка. Или, наоборот, запятая. Зависит от настроек локали.
  5. Возможно, в datetime надо писать строку, а не объект DateTime
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Это не ошибка. Это просто сообщение, что данные были обрезаны, чтобы влезть. Просто отлавливайте это исключение отдельно от всех остальных MySqlException (там наверняка у него другой класс)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы