2017-10-19 23 views
-5

我有我的代码有问题:C#的DataTable和SqlBulkCopy的

DataTable tablePmeElement = new DataTable("PMEELEMENT"); 

DataColumn codeBiblioColumn = new DataColumn(); 
codeBiblioColumn.DataType = System.Type.GetType("System.String"); 
codeBiblioColumn.ColumnName = "CODEBIBLIO"; 
codeBiblioColumn.AllowDBNull = false; 
codeBiblioColumn.DefaultValue = ""; 
codeBiblioColumn.MaxLength = 3; 

tablePmeElement.Columns.Add(codeBiblioColumn); 

element.CODEBIBLIO = (this.bibMde.BibCode.Length > 3) ? 
this.bibMde.BibCode.Substring(0, 3) : this.bibMde.BibCode; 

tablePmeElement.Rows.Add(element); 

s.WriteToServer(tablePmeElement); 

当我执行这个代码,我得到一个错误:

Column: "CODEBIBLIO" contains data with a length greater than: 3.

你有一个想法,以解决我的问题,因为我没有找到任何解决方案。

+2

您认为错误的含义是什么? – Amy

+0

SQL在哪里? – jarlh

+0

SQL由SQLBulk生成 – Moussawi

回答

0

当您在DataColumn上设置MaxLength属性时,需要确保为该列返回的数据的字符长度在属性值下。例如,如果您设置了codeBiblioColumn.MaxLength = 3并且数据库返回的值大于3个字符,则会出现运行时错误。要解决此问题,请增加MaxLength值,或者减少存储在数据库中的值的长度。

+0

在数据库中,列属性设置为3,所以我也将DataColumn设置为3。 – Moussawi

+0

什么是列类型?在数据库中运行查询时返回的值是什么? –

+0

列类型是字符串,当我把这个查询到数据库中时,返回的值是好的 – Moussawi