但是在使用更新,和自定义的查询方法的时候,一直提示“强类型Dataset出错提示未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值”这样一个错误。
我一直在网上游啊游啊,找啊找啊,没找到解决方法:
一般大家提出这几种解决方法:
1,把dataset的enforcecontraints设为false。(强制关系约束属性关闭)
2----------------------------------------------------------------------
强类型的DataTable和SQL语句查询出的结果不匹配。简单说就是强类型的DataTable比SQL语句查询出来的结果集要多一些数据列。
解决的办法是重新生成匹配结果集的强类型DataTable。具体方法如下:
在你的.xsd文件里找到出问题的那张表,使用Shift键配合鼠标选中全部的列,然后按Delete删除,然后鼠标右键点击表头,然后在菜单中选择“配置”,然后点击“完成”按钮,重新生成强类型DateTable即可。
使用以上方法的前提是,SelectCommand命令里的SQL语句是类似Select * FROM Table这样的语句。如果没有使用通配符,那就得再修改下SQL语句了,然后再重新生成强类型的DataTable。
//////
另外也可能是主键不对应,主键唯一,但select的结果却不唯一。更改数据集.xsd文件中的相关表的主键设置就可以。
--这个方法也试过,修改xsd文件中的相关表的主键设置;选中全部的列,然后按Delete删除,再重新生成,也不行(删除提示不能删除)。
--------------------------------------------------------------------------------------------------
3、在DataSet里面把列删掉,然后重新生成。我试过,删不掉,删了提示不能删除等错误信息.
4、清除表的视图状态。dataset.table.clear()。//这个我也试验过,也不行
5、我没辙了,很多方法试验过了,删除了TableAdapter,重新生成。好了。
反正引起原因就是你的命令生成的TableAdapter与数据库内的字段不一致造成的。
有没有其他解决方法我还得试验一下。
----------------------以上,如果有什么补充我会更新的