我如何解决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',但未在用户代码中处理
附加信息:字符串或二进制数据将被截断。
语句已被终止。
我的代码或存储过程中有什么问题导致了这个异常,我该如何解决?
一个或多个输入值大于指定的列长度。列太小或者输入太长
有两种方法:
-
将始终指示的输入传递给SQL
cmd.Parameters.AddWithValue("@Company_name", txtname.Text.Substring(0, COLUMN_LENGTH));
- 限制输入字段。(textbox max length)我更喜欢,因为当数据存储时,用户输入永远不会改变。此外,用户还会收到关于最大输入大小的警报。
检查数据库表中列/字段的大小。我猜,其中一个表字段的定义不够大,无法容纳传递的值。
您试图插入的数据(字符串或二进制)长度超过目标字段的最大可能长度。