今天修改早期的一個項目,運行後,選擇一個查詢的頁面時,提示“未能啟用約束。一行或多行中包含違反非空、唯一或外鍵約束的值。”的異常信息。
原因分析:強類型的DataTable和SQL語句查詢出的結果不匹配。 簡單說就是強類型的DataTable比SQL語句查詢出來的結果集要多一些數據列或這屬性不對應。
針對所提示的異常信息檢查了所用表的唯一、非空、外鍵約束,並未發現異常情況。因此上網查詢了有關的資料。所提供的方法有以下幾種:
•DataTable中的字段屬性與表中的字段屬性不一致,導致了未能啟用約束。修改方法:找到***.xsd文件裡與表格修改的對應字段,點擊該字段的屬性----最大長度 等於你的數據表的修改字段後的最大長度
•在.xsd文件裡找到出問題的那張表,使用Shift鍵配合鼠標選中全部的列,然後按Delete刪除,然後鼠標右鍵點擊表頭,然後在菜單中選擇“配置”,然後點擊“完成”按鈕,重新生成強類型DateTable即可。使用以上方法的前提是,SelectCommand命令裡的SQL語句是類似Select * FROM Table這樣的語句。如果沒有使用通配符,那就得再修改下SQL語句了,然後再重新生成強類型的DataTable。(此方式並沒有用過,在刪除的時候可能會提示錯誤,不能夠刪除,見附件)
附件:在刪除可能會提示以下錯誤:
這說明是數據庫的連接有問題,解決方法:重啟VS,先不要打開項目,在tools中選擇connect to database連接到數據庫,再打開項目即可