我从ExecuteNonQuery()
"String or binary data would be truncated. The statement has been terminated."
问题是要发送的变量大于DB中的变量。 我使用以下代码:
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();
}
答案 0 :(得分:6)
当您尝试将某些内容插入到该列太长的列中时会发生这种情况。
例如,当您有一列VARCHAR(10)
并尝试插入值"ABCDEFGHIJKLMNOP"
时。这将导致数据被截断并产生错误。
我无法确定您的案例中哪一列,但必须是Username
,Password
或Email
中的一列。
答案 1 :(得分:0)
问题是您尝试填充的数据库中的数据类型小于您传递的值之一。您需要检查每个参数@Username,@ Password和@Email,并查看哪个参数大于数据库数据类型。然后,您可以根据需要增加数据库中数据类型的大小,或者在发送之前修剪参数值。
答案 2 :(得分:-1)
Dim qry As String
qry = "inserg into Table1 values('" & TextBox1.Text & "'+'" & TextBox2.Text & "'+'" & DropDownList1.Text & "'+'" & DropDownList2.Text & "'+'" & TextBox4.Text & "'+'" & TextBox5.Text & "'+'" & RadioButtonList1.Text & "'+'" & RadioButton1.Text & "'+'" & RadioButtonList2.Text & "'+'" & CheckBoxList1.Text & "'+'" & TextBox6.Text & "'+'" & TextBox7.Text & "'+'" & TextBox8.Text & "'+'" & TextBox9.Text & "'+'" & TextBox10.Text & "'+'" & RadioButtonList3.Text & "'"
Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\MCALab\My Documents\net.mdb")
Dim cmd As New OleDbCommand(qry, cn)
cn.Open()
**cmd.ExecuteNonQuery()**this line have error please any one know mean debug it.
cn.Close()