2013-05-31 23 views
0

一個非常簡單的問題,即試圖從VB.NET對象函數返回一個數據集。爲什麼此對象函數正在退出?

下面顯示了一旦運行SQL查詢並且就在創建新對象連接之前,我正在從函數中退出的函數。

編輯形式在這裏稱爲:

edit.Show() 

在編輯表單,下面是運行檢索選擇數據的詳細信息的數據庫往返檢索到的基於datatset的「editEntry」方法在構造函數中設置ID。

Private Sub edit_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 


    Dim editDetails As New DBHandler(ID) 

    Dim returnedDetails As New DataSet 

    returnedDetails = editDetails.editEntry() 

    Dim nameReturned As Object = returnedDetails.Tables("editedTable").Rows(0)(1) 

    Dim firstNameEdit As String = nameReturned.ToString() 

    TextBox1.Text = firstNameEdit 

這是發生問題的功能。沒有什麼是被從查詢返回

構造其中ID設置:

Public Function editEntry() As DataSet 

    Dim editDataSet As New DataSet 
    Dim editSql As String = "SELECT * FROM duraGadget WHERE _id = " + IDofFault + "" 

    'Exiting from the function here 
    Dim connectionEdit As New OleDbConnection(conString) 
    Dim editAdapter As New OleDbDataAdapter(editSql, connectionEdit) 

    connectionEdit.Open() 

    editAdapter.Fill(editDataSet, "editedTable") 

    connectionEdit.Close() 

    Return editDataSet 

End Function 

沒有錯誤,而只是從功能和IM退出:

Public Sub New(ByVal ID As Integer) 

    IDofFault = ID 

End Sub 

類的功能不知道爲什麼。

+1

'IDofFault'在哪裏設置? –

+0

當'editDetails'實例被創建時,它從單元格單擊方法傳遞給DBHandler類的構造函數。我在調試中檢查了這一點,正確的ID正在被傳遞和設置。 – user1352057

+0

@RowlandShaw哈哈很好的問題:) –

回答

2

您可能會收到一個異常,並且您的visual studio調試設置未配置爲阻止您使用這些類型的異常。

在Try/Catch塊中包裝EditEntry函數的內容,並在catch中放置一個斷點。查看是否觸發並查看異常詳細信息以獲取有關發生事件的更多信息。

+0

不會觸發,因爲代碼在SQL之後退出,並且恰好在連接對象之前創造了蜂。 – user1352057

+0

調整我的回答 –

+1

@ user1352057不是之前:**期間**。創建連接的行爲拋出異常,而VS忽略它在調試器中顯示的異常,就像線路從不運行一樣。 –

1

非常愚蠢的錯誤,這是傢伙。我只是將ID值存儲爲sting ...然後嘗試將其作爲Integer傳遞給構造函數...結果?.....轉換異常。

+0

並添加....作爲一個主要的C#開發,使用'+'只是爲了將我的變量添加到方程中導致它被看作是一個方程。對於閱讀此內容並遇到相同問題的任何人,請使用'&'而不是'+'連接您的SQL查詢! – user1352057

+0

這就是將Option Strict On添加到代碼頂部或將其設置在項目屬性中的良好做法。你會立即得到一個編譯錯誤。 –

相關問題