2015-12-09 39 views
-2
object check; 
string q = "query details"; 

using (SqlCommand cmd = new SqlCommand(q, sc)) 
{ 
    try 
    { 
     sc.Open(); 
     check = cmd.ExecuteScalar(); 
     sc.Close(); 
    } 
    catch (Exception e) 
    { 
     // Alert user, continue execution; 
     CloseConnectionIfOpen(sc); 
     return s; 
    } 

    if (check == null) 
    { 
     // Alert user, continue execution; 
     return s; 
    } 
    else 
    { 
     stringvariable = check.ToString(); 
    } 
} 

我現在需要檢查stringvariable是否爲空字符串,還是我可以保證它至少有1個字符?從SqlCommand.ExecuteScalar()調用非空返回後,我是否需要在轉換爲字符串後檢查空字符串?

如果我可以保證字符串不是空的,那麼繼續前進並試圖從ExecuteScalar()投下回報並捕獲異常會更有意義嗎?

+0

一個空字符串!=空字符串,所以你真的應該檢查它是否有內容。你可以使用'string.IsNullOrEmpty()'來檢查它是否是一個或另一個。 –

+0

我認爲這將工作,除了爲了得到那麼遠,我將不得不嘗試將空對象作爲一個字符串來投射,並且在得到可以調用IsNullOrEmpty()的點之前拋出異常。你的第一句話證實了我的想法。 – SmashCode

+0

使用填充了我無法觸及的信息的遺留數據庫來處理截止日期。我真的不想讓我公司的時間來開始一個新的控制檯程序,創建一個虛擬數據庫,輸入一個空字符串的行,然後運行該程序的快速問題。我現在可以做安全的事情,並檢查對象,然後檢查字符串,這就是我在等待查看是否有任何輸入時正在做的事情。 – SmashCode

回答

0

來自: https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.80).aspx

返回值
第一行的在結果集中的第一列,或者如果結果集爲空空 參考。

因此,不需要檢查字符串變量中的空字符串。

關於你的第二個問題。你不應該期待一個例外。異常是意想不到的。如果你知道你的SQL查詢可能會失敗,那麼你應該是主動的,並明確地測試如果檢查!= null。