Member 12932743 Ответов: 3

Ошибка при вставке в базу данных


Каждый раз, когда я запускаю программу, она говорит:

Необработанное исключение типа "System.Data.SqlClient. SqlException" произошло в System.Data.dll

Дополнительная информация: строковые или двоичные данные будут усечены.

Заявление было прекращено.

Пожалуйста, держите его простым в решениях, я немного новичок в C#.

Что я уже пробовал:

private void button1_Click(object sender, EventArgs e)
{
 con = new SqlConnection("The Database connection string")
 con.Open();
 cmd = new SqlCommand("INSERT INTO Storage (Serial,Name) VALUES (@Serial,@Name)",     con);
 cmd.Parameters.Add("@Serial", txtSerial.Text);
 cmd.Parameters.Add("@Name", txtName.Text);
 cmd.ExecuteNonQuery();
}

[no name]

Вы знаете, как пользоваться google? Вы пытаетесь поместить в столбец таблицы больше информации, чем она настроена для обработки.

3 Ответов

Рейтинг:
2

P_Z

Привет, может быть, хотя бы один из серийных номеров или имен имеет длину столбца таблицы базы данных.


Рейтинг:
2

Peter Leow

Буквально как сказано в сообщении об ошибке: вы пытаетесь вставить строку или двоичные данные, длина которых превышает максимальную длину, установленную для целевого поля. Вы должны выяснить, какое поле является виновником. Чтобы решить эту проблему, вы можете изменить максимальную длину, разрешенную для этого поля, или ограничить длину входных данных с помощью проверки, в зависимости от ваших требований.


Рейтинг:
2

Pradeep Prasanna Ekanayaka

try
           {
               using (SqlConnection connection = new SqlConnection(connectionString))
               {
                   using (SqlCommand cmd = new SqlCommand("INSERT INTO Storage (Serial,Name) VALUES (@Serial,@Name)", con))
                   {
                       connection.Open();
                       cmd.Parameters.Clear();
                       cmd.Parameters.Add("@Serial", txtSerial.Text);
                       cmd.Parameters.Add("@Name", txtName.Text);
                       int res=cmd.ExecuteNonQuery();
                       if (res > 0)
                       {
                           MessageBox.Show("Done");
                       }
                       else
                       {
                           MessageBox.Show("Error");
                       }

                       connection.Close();
                   }

               }
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.ToString());
           }


пожалуйста, используйте sql quary после имени переменной соединения, как это


using (SqlCommand cmd = new SqlCommand("INSERT INTO Storage (Serial,Name) VALUES (@Serial,@Name)", ******** /*this place*/))


[no name]

Возможно, вы могли бы объяснить, как этот код решает ошибку OPs, которая находится на стороне базы данных и не имеет ничего общего с кодом C#?