2011-11-10 113 views
0
public bool ConnectToDB() 
{ 
    SqlConnection sqlConnect = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ToString()); 
    try 
    { 
     sqlConnect.Open(); 
     if (sqlConnect.State == ConnectionState.Open) 
     { 
      return true; 
     } 
    } 
    catch (SqlException ex) 
    { 
     // some code here... 
    } 
    finally 
    { 
     sqlConnect.Close(); 
    } 
} 

當我運行這段代碼,它給了一個錯誤錯誤在asp.net返回值

錯誤「DataAccess.ConnectToDB()」:不是所有的代碼路徑返回一個值

回答

0
public bool ConnectToDB() 
{ 
    SqlConnection sqlConnect = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ToString()); 
    try 
    { 
     sqlConnect.Open(); 
     if (sqlConnect.State == ConnectionState.Open) 
     { 
      return true; 
     }else 
return false; 
    } 
    catch (SqlException ex) 
    { 
     return false; 
    } 
    finally 
    { 
     sqlConnect.Close(); 
    } 
} 
+0

@AshBurlaczenko我建議你學習.NEt。立即 –

0

您的方法簽名表示您返回一個布爾(public bool ConnectToDB())。但是,只有在連接打開時才返回bool。

我想你打算返回false否則。 如果是這樣,請從catch子句返回false。

catch (SqlException ex) 
{ 
    // some code here... 
    return false; 
} 
0

您將需要修改外,如果條件爲,如果有一個例外,前「返回true」會發生什麼達到或如果IF條件不滿足返回值?你需要在else部分和catch塊中有return語句。

+0

錯誤,在finally塊中不需要返回。 – Illuminati

+0

感謝您指出。這是一個無意的錯誤,並已得到糾正。 – clklachu

0

當你有一個返回類型時,你所有的代碼路徑,即try/catch塊應該返回一些東西。在這種情況下,錯誤將是一個合適的值。但是,如果catch塊重新拋出異常,它不會被要求。

0

您需要在函數的末尾添加return true,並在異常塊中添加return false。

0

請考慮在您的代碼中是否發生異常,並在catch中處理異常,但return true永遠不會到達,並且現在執行處於捕獲狀態,然後移至finally塊。所以你需要在catch部分添加return false來編譯。

1

你必須把所有的返回條件的功能。

0

你打開連接來檢查數據庫是否打開似乎是多餘的。事實上,人們可能會爭辯說,如果數據庫連接已經打開,它將引發異常。你有涉及異常處理,但你可以簡單地檢查狀態,無需打開連接:

public bool ConnectToDB() { 
    return sqlConnect.State == ConnectionState.Open; 
}