I get the following error from ExecuteNonQuery()
"String or binary data would be truncated. The statement has been terminated."
The problem is the variable to be sent is bigger that the one in the DB.
I am using the following code:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//GridViewRow row = GridView1.SelectedRow;
GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
var Username = (Label)row.FindControl("Label3");
var Password = (Label)row.FindControl("Label4");
var Email = (Label)row.FindControl("Label5");
// var ID_Inscricao = ((Label)row.FindControl("Label1")).Text;
var ID_Inscricao = ((Label)row.FindControl("Label1")).Text;
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["FormacaoConnectionString"].ToString());
SqlCommand sqlComm = new SqlCommand();
sqlComm = sqlConn.CreateCommand();
sqlComm.Parameters.Add("@Username", SqlDbType.Text);
sqlComm.Parameters.Add("@Password", SqlDbType.Text);
sqlComm.Parameters.Add("@Email", SqlDbType.Text);
sqlComm.Parameters.Add("@ID_Inscricao", SqlDbType.Int);
sqlComm.Parameters["@Username"].Value = Convert.ToString(Username);
sqlComm.Parameters["@Password"].Value = Convert.ToString(Password);
sqlComm.Parameters["@Email"].Value = Convert.ToString(Email);
sqlComm.Parameters["@ID_Inscricao"].Value = Convert.ToInt32(ID_Inscricao);
string sql = "INSERT INTO Utilizadores (Username, Password, Email, ID_Inscricao) VALUES (@Username, @Password, @Email, @ID_Inscricao)";
sqlComm.CommandText = sql;
sqlConn.Open();
sqlComm.ExecuteNonQuery();
sqlConn.Close();
}
This happens when you try to insert something into a column that is too long for that column.
For example, when you have a column
VARCHAR(10)and you try to insert the value"ABCDEFGHIJKLMNOP". This would lead to the data being truncated and that generates an error.I can’t tell which column it is in your case but it has to be one of
Username,PasswordorEmail.