我對 Visual Basic 的了解不像我對 C 或 C# 那樣了解。
我將檢查選擇查詢是否在回傳的“testDataset”中有任何結果并有一些結果,所以我寫了以下語法:
If ((testDataset Is Nothing) Or (testDataset.Tables Is Nothing) Or testDataset.Tables.Count = 0 _
Or (testDataset.Tables.Item(0).Rows Is Nothing) Or (testDataset.Tables.Item(0).Rows.Count = 0) _
Or (testDataset.Tables.Item(0).Rows(0) Is Nothing)) Then
MessageBox.Show("Dataset has no results!", "Database Query Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End If
在 C 中,當邏輯 OR 中的運算式為真時,將不會處理下一個運算式。但在 Visual Basic 中似乎并非如此。所以我想知道如何在visual basic中檢查幾個運算式,如果一個成立就停止處理下一個。
所以我的問題主要可以問兩個問題:
如何使用 OR 檢查多個條件而不處理下一個?
如何檢查資料集是否有結果(至少一行)并且該行(至少一行)中是否存在特定列?
uj5u.com熱心網友回復:
您可以使用null 條件運算子在一行中短路所有這些檢查。?此鏈中的after 成員將停止評估后續成員,如果成員為 null,則回傳 null。
Return testDataset?.Tables?.Item(0)?.Rows?.Any() ' true if any, false if none
uj5u.com熱心網友回復:
這對檢查Nothing. 大概你已經創建了一個DataSet并用一個DataTable. 該表可能沒有回傳任何行,但既不是DataSet也不DataTable是無。
如果您只使用單個表,則無需使用 DataSet。
Private dt As New DataTable
Private Sub GetData()
Using cn As New SqlConnection(ConLocal),
cmd As New SqlCommand("Select Top 10 * From Coffees", cn)
cn.Open()
Using reader = cmd.ExecuteReader
dt.Load(reader)
End Using
End Using
End Sub
Private Function CheckTable() As Boolean
If dt.Rows.Count > 0 Then
Return True
End If
MessageBox.Show("Dataset has no results!", "Database Query Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End Function
uj5u.com熱心網友回復:
這 - 可能 - 不是一個確切的答案,而是一般的建議......
從資料集讀取資料時捕獲錯誤的最短方法是將代碼放入Try...Catch..Finally塊中。
Dim bRetVal As Boolean = True
Try
'your code to read data
Catch ex As Exception
MessageBox.Show("Something went wrong..." & vbCrLf & vbCrLf & ex.Message, "Error while reading data", MessageBoxButtons.OK, MessageBoxIcon.Error)
bRetVal = False
Finally
Return bRetVal
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/368462.html
