none
使用强类型DataSet出现“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值”错误 RRS feed

  • 问题

  • 小D使用强类型的DataSet建立一个对表 Board的访问 

    这个表有 ID Title Content DateTime Hits MasterID 字段

    强类型的主查询是 SELECT * FROM Board

    但是我又新建了一个查询 SELECT ID, Title FROM Board ORDER BY DataTime DESC 后

    在.cs里调用这个方法 总出现 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值  这个错误


    使用DataSet的预览数据的功能发现 我虽然在第2个查询中未选择查询 Content Hits等列 但是预览数据的时候还是出现空列


    小D怀疑是这里出的问题  但是没有解决方法?

    请遇到过此问题的大侠指点一下

    谢谢了




    异常详细信息: System.Data.ConstraintException: 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。


    行 807:            this.Adapter.SelectCommand = this.CommandCollection[1];
    行 808:            Board_DS.BoardDataTable dataTable = new Board_DS.BoardDataTable();
    行 809:            this.Adapter.Fill(dataTable);
    行 810:            return dataTable;

    2009年3月31日 13:10

答案

  • 楼主,你好

    看报错信息也许是因为你的数据中出现了null或者外键重复等问题。

    一行或多行中包含违反非空、唯一或外键约束的值


    你看看数据是不是这样。
    Microsoft Online Community Support
    2009年4月1日 7:17
  • try
    {
    this.Adapter.Fill(dataTable); 
    }
    catch(Exception e)
    {
        DataRow[] failedRows=dataTable.GetErrors();
    }

    MSMVP VC++
    2009年4月1日 15:05
    版主

全部回复

  • 看看DataTable.GetErrors的值.
    MSMVP VC++
    2009年3月31日 16:26
    版主
  • 这些是强类型DataSet自动生成的代码。。。

    2009年4月1日 3:02
  • 看看DataTable.GetErrors的值.
    MSMVP VC++

    这些是强类型DataSet自动生成的代码。。。我没法写吧?
    2009年4月1日 3:02
  • 楼主,你好

    看报错信息也许是因为你的数据中出现了null或者外键重复等问题。

    一行或多行中包含违反非空、唯一或外键约束的值


    你看看数据是不是这样。
    Microsoft Online Community Support
    2009年4月1日 7:17
  • try
    {
    this.Adapter.Fill(dataTable); 
    }
    catch(Exception e)
    {
        DataRow[] failedRows=dataTable.GetErrors();
    }

    MSMVP VC++
    2009年4月1日 15:05
    版主
  • 因为改了表格的字段的最大值    未能及时更改dataset 的字段   所以产生了 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值

    方法是: 找到***.xsd文件里与表格修改的对应字段  ,点击该字段的---属性----最大长度 等于你的数据表的修改字段后的最大长度 

    2010年4月28日 3:36