我如何解决System.Data.SqlClient.SqlException:字符串或二进制数据将被截断

本文关键字:二进制 字符串 数据 SqlException SqlClient 何解决 解决 Data System | 更新日期: 2023-09-27 18:05:43

当我执行代码时,出现以下错误消息:

protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(str);
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "Companyregister";
    cmd.Parameters.AddWithValue("@Company_name", txtname.Text);
    cmd.Parameters.AddWithValue("@Register_no", txtreg_no.Text);
    cmd.Parameters.AddWithValue("@Type", DropDownList1.Text);
    cmd.Parameters.AddWithValue("@Address", txtadrs.Text);
    cmd.Parameters.AddWithValue("@Email", txtemail.Text);
    cmd.Parameters.AddWithValue("@Contact_no", txtphone.Text);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
    Response.Write("Register succesful");
}
错误:

类型为"System.Data.SqlClient"的异常。在System.Data.dll中发生了SqlException',但未在用户代码中处理

附加信息:字符串或二进制数据将被截断。

语句已被终止。

我的代码或存储过程中有什么问题导致了这个异常,我该如何解决?

我如何解决System.Data.SqlClient.SqlException:字符串或二进制数据将被截断

一个或多个输入值大于指定的列长度。列太小或者输入太长

有两种方法:

  • 将始终指示的输入传递给SQL

    cmd.Parameters.AddWithValue("@Company_name", txtname.Text.Substring(0, COLUMN_LENGTH));

  • 限制输入字段。(textbox max length)我更喜欢,因为当数据存储时,用户输入永远不会改变。此外,用户还会收到关于最大输入大小的警报。

检查数据库表中列/字段的大小。我猜,其中一个表字段的定义不够大,无法容纳传递的值。

您试图插入的数据(字符串或二进制)长度超过目标字段的最大可能长度。