gpt4 book ai didi

vb.net - 无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 VB.Net 中的错误

转载 作者:行者123 更新时间:2023-12-01 11:03:33 53 4
gpt4 key购买 nike

在 StackOverFlow 中出现了三个类似的问题,但没有一个给出答案..

如果已找到发生此错误的原因但不知道修复方法。

我正在为我的项目使用强类型数据集,该项目创建为 DAL 的 dll。

我已使用设计器将 Sql Server 表添加到此数据集中并创建了一个 DataAdapter

This is how the datatable looks

当我使用 DataTableAdapter 插入时它工作正常

daLabTest.Insert(txtLabTestId.Text, cmbLabTestType.Text, cmbTestName.Text, txtLabFees.Text, dtpLabEffDate.Value)

但是当我想在组合框或 GridView 中显示表格中的数据时,出现此错误。

Error showned in visual Studio

我说我发现了问题所在,我只是使用 DataSet 设计器预览了数据,发现函数返回的数据是这样的...

data i got preview

我为在数据集中查看此内容而编写的查询是

Select distinct(TestType) from LabTestTypes

所以这应该只返回一列,但数据集返回 5 列,而其他列为 null,而 TestName 列是主列,返回时不应为 null,因此问题存在。

为了解决这个问题,我尝试将 NullValueAllowDBNull 属性分别更改为 [Empty]true但这对我不起作用。

请帮助我...

最佳答案

那个过于笼统的约束异常是讨厌的,那么多提示之后的 InnerException 在哪里?!

此模板可能有助于识别问题行和列,但需要查询函数的“填充”版本。例如。 GetDistinct*() --> 填充*()。然后可以创建一个表并查询该行的错误文本。

    SomeTable tTable = new SomeTable()
try {
// sorry, if you have a GetData, change to the fill version
someTable.FillByActiveLogin(tTable, loginName);
} catch (System.Data.ConstraintException constrExc) {
System.Data.DataRow[] rowsErr = tTable.GetErrors();
for (int i = 0; i < rowsErr.Count(); i++)
if (rowsErr[i].HasErrors)
Dbg.WriteLine(rowsErr[i].RowError);
}

(感谢 Michael S 的提示,无论您身在何处!)

关于vb.net - 无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 VB.Net 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8448271/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com