這是我第一次嘗試在vb.net編寫一個oop程序。該程序的基本思想是使用Excel工作表作爲數據源,然後更新mysql數據庫。爲了實踐OOP的原則,我創建了一個名爲motorbike和financeExample的類型。字符串VB.Net類型轉換
我使用下面的連接字符串,它的數據作爲文本僅只是因爲似乎有一個問題閱讀1198
Dim xcelConnString As String =
"Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=R:\newBikeUpdates\motorcyclesLatest.xls;" _
& "Extended Properties=""Excel 8.0; IMEX=1"""
所以我在讀值模型,然後將其分配給摩托車和financeExample對象的屬性。
隨着vbscript的接地,它非常快速地變得非常清楚,數據類型並不像我第一次想到的那麼容易。所以,我因此寫了將在一個屬性分配一個值的點返回正確類型的函數:
motorcycle.category = checkValue(xcelDA("Category")) ' String expected
motorcycle.weight = checkValue(xcelDA("Weight")) 'String passed and Integer should be returned.
因此,這裏的功能:
Function checkValue(ByVal v As Object)
Dim ret
If Not IsDBNull(v) Then
If Double.TryParse(v, ret) Then
Debug.WriteLine("v is Double")
Return ret
ElseIf Integer.TryParse(v, ret) Then
Debug.WriteLine("v is an Integer")
Return ret
ElseIf v.GetType Is GetType(String) Then
Debug.WriteLine("v is a string")
Return CStr(v)
Else ' Presumption of string type
Debug.WriteLine("v is Other")
Return v
End If
Else
Debug.WriteLine("v is DBNull")
ret = ""
Return ret
End If
End Function
和字符串元素工程類別和字符串被返回。但是,當它分配權重值時,我得到一串「417」傳入,但double.tryparse(v,ret)或integer.tryparse(v,ret)元素都不起作用。當使用debug作爲v.getType()時,VS2010報告v爲字符串/ system.string。我甚至試過在integer.tryParse(「417」,ret)中傳遞調試,並且這可以工作,但由於某種原因它不會與v參數一起使用。
我也試過integer.tryParse(v.toString,ret),這也不起作用。
所以任何人可以點我在正確的方向請如何克服這個問題,因爲CINT似乎不工作(VBscript的接地,對不起!)
許多在此先感謝! 格雷厄姆
好,我正要發表評論說:「正常工作對我!」我基本上通過「451」作爲參數checkValue。 – Constanta 2013-03-19 12:16:49
感謝您的關注。我仍然遇到類型轉換問題。有沒有關於這個問題的建議,以及如何最好地接近它。 – EvilKermitSaurus 2013-03-19 13:14:12
如果你有更多類似的問題,請張貼一些代碼 – Constanta 2013-03-19 14:46:19