DataTable導(dǎo)致約束未啟用
今天修改早期的一個(gè)項(xiàng)目,運(yùn)行后,選擇一個(gè)查詢的頁(yè)面時(shí),提示“未能啟用約束。一行或多行中包含違反非空、唯一或外鍵約束的值。”的異常信息。
原因分析:強(qiáng)類(lèi)型的DataTable和SQL語(yǔ)句查詢出的結(jié)果不匹配。 簡(jiǎn)單說(shuō)就是強(qiáng)類(lèi)型的DataTable比SQL語(yǔ)句查詢出來(lái)的結(jié)果集要多一些數(shù)據(jù)列或這屬性不對(duì)應(yīng)。
針對(duì)所提示的異常信息檢查了所用表的唯一、非空、外鍵約束,并未發(fā)現(xiàn)異常情況。因此上網(wǎng)查詢了有關(guān)的資料。所提供的方法有以下幾種:
•DataTable中的字段屬性與表中的字段屬性不一致,導(dǎo)致了未能啟用約束。修改方法:找到***.xsd文件里與表格修改的對(duì)應(yīng)字段,點(diǎn)擊該字段的屬性----最大長(zhǎng)度 等于你的數(shù)據(jù)表的修改字段后的最大長(zhǎng)度
•在.xsd文件里找到出問(wèn)題的那張表,使用Shift鍵配合鼠標(biāo)選中全部的列,然后按Delete刪除,然后鼠標(biāo)右鍵點(diǎn)擊表頭,然后在菜單中選擇“配置”,然后點(diǎn)擊“完成”按鈕,重新生成強(qiáng)類(lèi)型DateTable即可。使用以上方法的前提是,SelectCommand命令里的SQL語(yǔ)句是類(lèi)似Select * FROM Table這樣的語(yǔ)句。如果沒(méi)有使用通配符,那就得再修改下SQL語(yǔ)句了,然后再重新生成強(qiáng)類(lèi)型的DataTable。(此方式并沒(méi)有用過(guò),在刪除的時(shí)候可能會(huì)提示錯(cuò)誤,不能夠刪除,見(jiàn)附件)
附件:在刪除可能會(huì)提示以下錯(cuò)誤:
這說(shuō)明是數(shù)據(jù)庫(kù)的連接有問(wèn)題,解決方法:重啟VS,先不要打開(kāi)項(xiàng)目,在tools中選擇connect to database連接到數(shù)據(jù)庫(kù),再打開(kāi)項(xiàng)目即可。
原文鏈接:http://www.cnblogs.com/muzihai1988/archive/2011/05/04/2036502.html
【編者推薦】