一、问题描述
在C#程序中定义了一个数据集ada,然后拉进了一张表INVOICE,需要对该表进行查询方法GetText(fph)的配置。 配置时的语句为:SELECT INVNAME FROM SCOTT.INVOICE WHERE (INVNO = :INVNO);
编译通过,运行时弹出“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。”错误。
二、原因分析
该查询方法返回的是记录集,如果没有主键的话,INVNAME 可能有重复,就会导致上面的错误,所以需要包含主键。三、解决方案
将主键也包含进select语句中:SELECT INVNO,INVNAME FROM SCOTT.INVOICE WHERE (INVNO = :INVNO);
如果嫌麻烦,可以直接SELECT * FROM SCOTT.INVOICE WHERE (INVNO = :INVNO);然后用列名获取特定列的字段即可:
ada.GetText(fph).Rows[0]["invtype"].ToString();