【问题标题】:C# DataTable and SqlBulkCopyC# 数据表和 SqlBulkCopy
【发布时间】:2017-10-19 13:05:41
【问题描述】:

我的代码有问题:

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);

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

列:“CODEBIBLIO”包含长度大于:3 的数据。

您有什么想法可以解决我的问题,因为我没有找到任何解决方案。

【问题讨论】:

  • 你认为这个错误意味着什么?
  • SQL 在哪里?
  • SQL由SQLBulk生成
  • element 对象的类型是什么?
  • 元素对象是一个 PMELEMENT 对象

标签: c# sql


【解决方案1】:

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

【讨论】:

  • 进入数据库,column 属性设置为 3,所以我也将 DataColumn 设置为 3。
  • 什么是列类型?在数据库中运行查询时返回的值是什么?
  • 列类型是字符串,当我将此查询输入数据库时​​,返回给我的值是好的
  • 但是当我删除它时,当我运行 WriteToServer 方法将它插入数据库时​​,返回相同的错误
  • 您可以编辑您的问题并添加发生错误的代码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多