@p4:字符串截断:max=4, len=6, value='插入数据库时出错
本文关键字:插入 出错 数据库 value len 字符串 max @p4 | 更新日期: 2023-09-27 18:18:45
我有一个强类型数据集的学生数据库。我有10列。问题在于性别专栏。每当我手动输入到datagrid并保存它的保存良好。但是当我从excel文件导入数据并将其保存到数据库时,我得到这个错误
@p4:字符串截断:max=4, len=6, value='Female'
我在数据集中设置了MaxLength为6。XSD和nchar(6)在数据库模式。下面是我的代码。
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow row = this.dataSet.StudentsDatabase.NewRow();
this.dataSet.StudentsDatabase.Rows.Add(row);
this.sbdgv.Rows[i].DefaultCellStyle.BackColor = Color.Yellow;
this.dataSet.StudentsDatabase.Rows[i]["Class"] = dt.Rows[i]["Class"];
this.dataSet.StudentsDatabase.Rows[i]["Section"] = dt.Rows[i]["Section"];
this.dataSet.StudentsDatabase.Rows[i]["Name"] = dt.Rows[i]["Name"];
this.dataSet.StudentsDatabase.Rows[i]["Gender"] = dt.Rows[i]["Gender"];
this.dataSet.StudentsDatabase.Rows[i]["Caste"] = dt.Rows[i]["Caste"];
this.dataSet.StudentsDatabase.Rows[i]["Present"] = dt.Rows[i]["Present"];
this.dataSet.StudentsDatabase.Rows[i]["Meals"] = dt.Rows[i]["Meals"];
this.dataSet.StudentsDatabase.Rows[i]["DateAdded"] = dt.Rows[i]["DateAdded"];
this.dataSet.StudentsDatabase.Rows[i]["DateDeleted"] = dt.Rows[i]["DateDeleted"];
}
其中dt是由excel填充的数据表。这里是保存逻辑
private void studentsDatabaseBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.bsStudentsDatabase.EndEdit();//binding source
this.taStudentsDb.Update(this.dataSet.StudentsDatabase);
MessageBox.Show("Save Successfull.", "Success!", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
谁能告诉我出什么事了?
@p4 : String truncation: max=4, len=6, value='Female'
女性的最大值是4个字符,而你试图插入6个字符,你必须减少你插入的值的长度
我找到了一个解决方法。由于某种原因,DataSetTableAdapter.Update
不工作,但当使用DataSetTableAdapter.Insert
时,一切都很好。下面是更新后的保存方法
for (int i = 0; i < this.dataSet.StudentsDatabase.Rows.Count ; i++)
{
this.taStudentsDb.Insert((byte)dataSet.StudentsDatabase.Rows[i]["Class"],
dataSet.StudentsDatabase.Rows[i]["Section"].ToString(),
dataSet.StudentsDatabase.Rows[i]["Name"].ToString(),
dataSet.StudentsDatabase.Rows[i]["Gender"].ToString(),
dataSet.StudentsDatabase.Rows[i]["Caste"].ToString(),
dataSet.StudentsDatabase.Rows[i]["Present"].ToString(),
dataSet.StudentsDatabase.Rows[i]["Meals"].ToString(),
dataSet.StudentsDatabase.Rows[i]["DateAdded"].ToString(),
dataSet.StudentsDatabase.Rows[i]["DateDeleted"].ToString() );
}
MessageBox.Show("Save Successfull.", "Success!", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
如果可能的话,我会请求mods不要关闭此线程,因为我没有得到适当的解决方案