2016-02-05 63 views
0

我正在運行過程中出現讀者循環內部這段代碼:vb.net讀取MySQL表列問題上沒有什麼字段類型在MySQL

While reader.read 
For x = 0 To reader.FieldCount - 1 
    MsgBox(reader.GetValue(x)) 
    Dim find_text As String = "<<" & reader.GetName(x) & ">>" 
    Dim replacet_text As String = reader.GetString(x) 

    oDoc.Content.Find.Execute(FindText:=find_text, ReplaceWith:=replacet_text, Replace:=word.WdReplace.wdReplaceAll) 
Next 
End While 

所以其顯示每列作爲我的SQL查詢說SELECT * from table1

但問題是,根據數據庫中的列的類型,它顯示錯誤,如cannot be converted to type 'String'.

無論什麼類型,我該怎麼辦?我只是想全部讀入一個字符串

回答

1

嘗試Dim replacet_text As String = reader.GetValue(x).ToString如果它失敗了,這意味着類型不能轉換爲字符串,所以你可以將這一行代碼放在try catch塊中,並在數據不可轉換時放置錯誤消息字符串:

While reader.read 
For x = 0 To reader.FieldCount - 1 
    MsgBox(reader.GetValue(x)) 
    Dim find_text As String = "<<" & reader.GetName(x) & ">>" 
    Dim replacet_text As String 
    Try 
     replacet_text = reader.GetValue(x).ToString() 
    Catch ex As Exception 
     replacet_text = "-- Not Available! --" 
    End Try 
    oDoc.Content.Find.Execute(FindText:=find_text, ReplaceWith:=replacet_text, Replace:=word.WdReplace.wdReplaceAll) 
Next 
End While 
+0

有沒有一種方法可以檢查循環中的列的類型? – charlie

+0

是的,您可以使用'reader.GetSchemaTable()'函數訪問另一個名爲'Schema Table'的DataTable中所請求表類型的信息。模式表中的第一列(索引0)應該是您的字段名稱,第二列將是類型。模式表中的行數等於表定義的字段數。 –