无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 ASP.NET C#
Posted
技术标签:
【中文标题】无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 ASP.NET C#【英文标题】:Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. asp.net c# 【发布时间】:2014-09-04 08:20:44 【问题描述】:我必须从两个文本框中获取开始日期和结束日期,并根据该日期从数据库中获取数据并显示到网格视图中。
protected void Button1_Click(object sender, EventArgs e)
String str = DateTime.Now.ToString(TextBox1.Text);
DateTime tm = Convert.ToDateTime(str);
String str2 = DateTime.Now.ToString(TextBox2.Text);
DateTime tm2 = Convert.ToDateTime(str2);
solarDataSet2TableAdapters.tbl_energy_reportTableAdapter state;
state = new solarDataSet2TableAdapters.tbl_energy_reportTableAdapter();
DataTable dt = new DataTable();
dt = state.GetGridDataBy(DropDownList1.SelectedValue,DropDownList2.SelectedValue,
str, str2); // Failed to enable constraints. One or more rows contain values
//violating non-null, unique, or foreign-key constraints. asp.net c#
GridView1.DataSource = dt;
GridView1.DataBind();
【问题讨论】:
您必须调试才能找到错误的实际原因。在dt = state.GetGridDataBy...
处设置断点。在调试器的quick-watch-window 中执行这一行。之后在快速观察窗口中执行dt.GetErrors()
并查看每一行的RowError
-property。在那里你会找到它。
@TimSchmelter :我已经完成了上述步骤。在 dt 上放置一个断点并运行快速监视窗口。数据集可视化工具不显示表格。我应该在哪里应用 dt.GetErrors() 方法?
我不知道我可以在上面的评论中添加什么以使其更清楚。你不明白什么?在调试器中执行dt=state.GetGridDataBy(DropDownList1.SelectedValue,DropDownList2.SelectedValue, str, str2);
。您将在调试器窗口中看到约束异常。然后在快速观察对话框中执行dt.GetErrors()
。结果,您将获得所有有错误的行。您会在每一行的RowError
属性中找到有意义的错误消息(也在调试器的快速查看对话框中)。现在清楚了吗?
@TimSchmelter 谢谢。
那么你让它工作了吗?真正的问题是什么?
【参考方案1】:
按照下面给出的步骤:
这实际上对我有用,希望你也能清楚。
-
进入数据集,复制
GetGridDataBy
的查询。
现在返回主数据集窗口并从列表中删除 GetGridDataBy
查询。
现在添加新查询并粘贴您从之前的GetGridDataBy
查询中复制的查询详细信息。
现在将其命名为 GetGridDataBy2
将后面代码中的所有GetGridDataBy
替换为GetGridDataBy2
。
然后运行。
有时由于自动生成签名代码时出现故障而发生此错误。此步骤将帮助您解决此问题。万事如意!
【讨论】:
以上是关于无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 ASP.NET C#的主要内容,如果未能解决你的问题,请参考以下文章
ORA-02292违反完整约束和ORA-02297无法禁用约束条件 cascade禁用主键