在线工具 在线编程 在线白板 在线工具 在线编程 在线白板

C# insert插入语句出错

请高手帮忙看下,谢谢。提示“将截断字符串或二进制数据。
语句已终止。”错误。

private void btnAdd_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("data source=.;initial catalog=school;integrated security=true");
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
string strCommand = "insert into student values ('@xuehao','@name','@age','@sex')";
cmd.CommandText = strCommand;

SqlParameter p4 = new SqlParameter("@xuehao", SqlDbType.VarChar, 10);
cmd.Parameters.Add(p4);
cmd.Parameters["@xuehao"].Value = Convert.ToString(txtXuehao.Text.Trim());

SqlParameter p1 = new SqlParameter("@name", SqlDbType.VarChar, 10);
cmd.Parameters.Add(p1);
cmd.Parameters["@name"].Value = Convert.ToString(txtName.Text.Trim());

SqlParameter p2 = new SqlParameter("@age", SqlDbType.VarChar, 10);
cmd.Parameters.Add(p2);
cmd.Parameters["@age"].Value = Convert.ToString(txtAge.Text.Trim());

SqlParameter p3 = new SqlParameter("@sex", SqlDbType.VarChar, 10);
cmd.Parameters.Add(p3);
cmd.Parameters["@sex"].Value = Convert.ToString(txtSex.Text.Trim());

int i = cmd.ExecuteNonQuery();

if (i == 0)
MessageBox.Show("添加成功!");
else
MessageBox.Show("添加失败");

}
int i = cmd.ExecuteNonQuery(); 错误提示出现在在这里。
数据库中,xuehao,name,sex 长度10,age长度2

数据类型都是nchar,在数据库中

改了,还是不行,这句话有没有问题string strCommand = "insert into student values ('@xuehao','@name','@age','@sex')";
最新回答
白裙红衣

2025-03-02 00:31:01

@xuehao

的数据类型是什么?

SqlParameter p4 = new SqlParameter("@xuehao", SqlDbType.VarChar, 10);

的话,要确保@xuehao,是好是字符串类型,而且长度是 10 位以下才行。 其它几项也是如此。

那么确定一下你填入的值的长度都是不操作10位。
txtXuehao.Text.Trim()

txtName.Text.Trim()

txtSex.Text.Trim())
你填的时候不能操作10位

txtAge.Text.Trim())
不能操作2位,
并且把
SqlParameter p3 = new SqlParameter("@sex", SqlDbType.VarChar, 10);

改为
SqlParameter p3 = new SqlParameter("@sex", SqlDbType.VarChar, 2);
三生一梦

2025-03-02 00:25:31

数据库中的字段长度太小