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();
}
}
当我运行此代码时,它会发出错误
错误'DataAccess.ConnectToDB()':并非所有代码路径都返回值
答案 0 :(得分:1)
你必须把所有的返回条件都放在功能中。
答案 1 :(得分: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();
}
}
答案 2 :(得分:0)
您的方法签名表示您返回bool(public bool ConnectToDB()
)。但是,只有在连接打开时才返回bool。
我认为你打算在其他情况下返回false。 如果是这样,请从catch子句中返回false。
catch (SqlException ex)
{
// some code here...
return false;
}
答案 3 :(得分:0)
你需要修改if条件之外的返回值,以确定在'return true'到达之前是否有异常或IF条件失败时会发生什么?您需要在else部分和catch块中使用return语句。
答案 4 :(得分:0)
当你有一个返回类型时,所有的代码路径,即try / catch块都应该返回一些东西。在这种情况下,false将是适当的值。但是,如果catch块重新抛出异常,则不需要它。
答案 5 :(得分:0)
您需要在函数末尾添加return true,并在异常块中添加return false。
答案 6 :(得分:0)
在代码中考虑是否发生异常,在catch中处理但是return true
永远不会到达并且执行现在处于catch状态,然后移动到finally块。因此,您需要在catch部分中添加return false
以进行编译。
答案 7 :(得分:0)
打开连接以检查数据库是否已打开似乎是多余的。事实上,有人可能会争辩说,如果数据库连接已经打开,它将抛出异常。您确实涉及异常处理,但您只需检查状态而无需打开连接:
public bool ConnectToDB() {
return sqlConnect.State == ConnectionState.Open;
}