以前在VB.NET中使用使用ADO訪問SQL Server數據庫,從數據庫中讀取數據時,經常會遇到這樣的錯誤提示:從類型“DBNull”到類型“String”的轉換無效,如圖所示:
這個問題曾經困擾了我很長時間,因為這個錯誤的提示讓人疑惑:從類型“DBNull”到類型“String”的轉換無效,還有下面的解釋“當從一個數字執行強制轉換時,值必須是一個小於無限大的數字”——出現錯誤的字段明明是字符類型的,為什么會提示說從數字類型轉換成String類型呢?只不過是因為在數據庫中該字段會存在內容為空的情況,而且這種錯誤提示並不是每一次都存在的:因為同樣為字符類型的字段,同樣存在內容為空的情況下,有的時候會產生錯誤提示,有的時候就不會。以至於曾經很長一段時間內都找不到解決方法,只能在程序里面判斷當該字段的用戶輸入內容為空的時候,使用一個“無”字來代替,這樣不僅操作繁瑣,而且顯得不倫不類。
直到有一天,我突發奇想的將括號外層的Trim()函數刪除了,沒想到錯誤提示消失了!
明白了,原來一切都是這個Trim()函數搞的鬼,看來是因為在讀取數據庫中某個字段的值為空的時候,再使用Trim()函數來刪除讀取的內容兩端的空格的話,有的時候就會產生錯誤,至於為什么會這樣呢,到現在都不明白,因為在VB6.0當中,同樣的情況下是不會出現這個問題的(而且那個錯誤提示也真是讓人困惑),不過又不能不使用這個Trim()函數啊,因為從SQL Server數據庫里面讀取的字段數據會莫名其妙的帶上一些空格,如果不使用Trim()函數將這些空格清除了,那讀取后賦值給相關的控件內顯示的時候就會非常難看。
不過好在VB.NET當中還提供了另外一種刪除兩端空格的方法,那就是直接在該字段代碼后面加上".ToString"方法輸出內容,如果還需要刪除兩端的空格的話,還可以繼續加上.Trim方法來執行刪除兩端空格的操作,而且這種方式還不會產生錯誤!如圖所示:
所以如果大家也遇到了這個錯誤提示,不妨看看是不是那個Trim()函數的問題吧!
原創性聲明:
此文章實屬原創,目前僅在本站和瑞文軟件的官方網站(地址:https://www.rwrjhao.com/details?article_id=47)發布,請轉載的朋友一定要注明本網站本文章的地址或是“瑞文軟件”的字樣,否則一律按侵權處理,謝謝合作!