2016-09-06 85 views
0

當我執行出現此錯誤信息的代碼:如何解決System.Data.SqlClient.SqlException:字符串或二進制數據將被截斷

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"); 
} 

錯誤:

An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

Additional information: String or binary data would be truncated.

The statement has been terminated.

是什麼在我的代碼或我的存儲過程中導致此異常錯誤,我該如何解決?

+3

SP'Companyregister'是如何定義的? –

+0

您的一個參數的長度必須超過存儲過程中指定的長度。 – Sagar

+0

檢查您的列的最大長度,您可能試圖將一個字符串保存爲11個字符到一個需要10個字符的列 – Dumisani

回答

-1

檢查數據庫表中的列/字段的大小。我猜想,其中一個表字段的大小不足以容納傳遞的值。

2

一個或多個輸入值比指定的列長度長。列太小或輸入太長。

你可以解決這個問題有兩種方法:

  • 傳遞輸入總是trucated到SQL

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

  • 限制你的輸入字段。 (文本框最大長度)我更喜歡,因爲用戶輸入在數據存儲時不會改變。此外,用戶會收到最大輸入尺寸的提醒。
0

您試圖插入長於目標字段可能的最大長度的數據(字符串或二進制)。

+0

非常好。怎麼樣_「以及如何解決?」_ – MickyD

+0

您可以從數據庫 或 增加字段最大長度可以設置文本框的最大長度類似於數據庫字段的最大長度 –

+0

好的一個。這裏有一個爲你+1的:) – MickyD

相關問題