@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:字符串截断:max=4, len=6, value='插入数据库时出错

@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不要关闭此线程,因为我没有得到适当的解决方案