DB2 報錯:CLI0111E 數值超出范圍。 SQLSTATE=22003


第一次拋出這個異常的時候,就馬上着手嘗試解決,解決了半小時還是這個問題,有點兒慌了,馬上到處搜索,因為沒有遇到這個問題,百度,Google,bing。。。。

搜索SQLstatue,搜索SQLerror,搜索這個錯誤代碼22003.。。。

 

都是他娘的坑爹答案,一個東西到處他么的轉載,一個錯誤答案到處他么的轉載。。。

轉載的時候你們嘗試了嗎?解決問題了嗎?鄙視這種垃圾程序員。

 

使用C#讀取DB2數據內容的時候,突然出現這個錯誤,經過無數次的debug,已經確定了,使用parameters傳入的參數無問題,因為如果parameters傳入的參數有問題的話,那么在ExecuteReader的時候就會拋出異常了;但是這個錯誤是在使用reader對象讀取的時候拋出的。

經過反復試驗發現,是DB2返回的數據類型和C#實體類屬性的數據類型不一致造成的,這個不一致可能會造成數據溢出,

所以ADO這里直接拋出這個讓人摸不着頭腦的異常:CLI0111E  數值超出范圍。 SQLSTATE=22003

解決方式是:確定你數據庫查詢輸出的數據類型,如果是數據庫輸出的是decimal類型,而你使用的接收實體字段屬性類型不是decimal類型的,那么就會出現這個問題。

因為double存儲的數據長度和decimal存儲的數據長度是不一樣的,精度也就不一樣,如果數據庫輸出的是decimal類型,而實體類確實double類型的,這個時候會丟失精度,也就會拋出這個異常了。

我這里的錯誤就是,數據庫查詢出來的是decimal類型的,而我使用的實體類的屬性類型確是double類型的,這個時候就出現了這個異常。

我的最終解決方案是,輸出的這個字段類型使用   DOUBLE(round(字段算法,2)),輸出double類型,保留兩位小數。

這個是我遇到這個問題的解決方案,如果你也是這個問題,那么應該幫到您了;如果需要精度,建議調整字段類型,與數據庫字段的最終類型保持一致。

 

技術交流群:88390778

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM