2012-12-10 46 views
2

我們拿到的這款SQL查詢返回:Vb.net - 處理空或無值從SQL命令對象

Select EmployeeDesignation from Employee where EmployeeName = Paramater1 

(參數1是值傳遞到這一點)

我們正在利用這樣的說法: lEmployeeDesignation = _SQLCommand.ExecuteScalar()

3場景的:

  1. 返回第Ë員工名稱(在表中存在的記錄)
  2. 沒有值在數據庫中設置的參數1 - 所以應該返回NULL(記錄存在,但沒有值)
  3. 任何員工記錄存在所以沒有返回值(記錄不存在)

我很苦惱2和3的場景 - 場景3的情況下,我們希望應用程序失敗,但正在努力如何捕獲此錯誤。 問候

回答

0
lEmployeeDesignation = _SQLCommand.ExecuteScalar() 
if lEmployeeDesignation IsNot Nothing AndAlso lEmployeeDesignation <> DBNull.Value then 
    ' you have found your data....' 
Else 
    if lEmployeeDesignation = DBNull.Value then 
     ' you have a record for parameter1 but EmployeeDesignation field is null' 
    End If 
End If 

注意使用AndAlso對帶有短路的評估過程。如果第一個條件爲假,則第二個未評估

+0

的情況下lEmployeeDesignation是沒有,那麼當評估「if lEmployeeDesignation = DBNull.Value」時,這不會引發異常嗎?你是不是也想用「如果員工設計不是什麼也沒有...」來評價? – Mac

+0

我喜歡在答案後4年的某人,對其進行降級並沒有留下任何評論來解釋他/她有什麼錯誤。那時我對這個網站很陌生,但今天仍然看不到這個答案是錯誤的。 – Steve

0

你可以完全被消除空...

Select IsNull(Max(EmployeeDesignation),0) from Employee where EmployeeName = Paramater1 

這不是做一個非常好的事情,但它的工作原理只要你沒有做太多的事情就沒事了。

你也可以把一個計數(EmployeeDesignation)= 0檢查方案3雖然這當然無法在相同的查詢做,或者你將不得不使用一個讀者