实际上我的代码显示错误“并非所有代码路径都返回值”
public DataTable Do_Insert_Update_Delete(string Proc_name, params object[] arg)
{
if (Proc_name == "Vehicle_Booked_Info")
{
SqlCommand com = new SqlCommand("Vehicle_Booked_Info", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(" @Today_Date", SqlDbType.DateTime).Value = Convert.ToDateTime(arg[0].ToString());
SqlDataAdapter sda = new SqlDataAdapter(com);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
}
即使我在这里return dt
如果我在if子句中使用它,则显示错误
当前上下文中不存在
如何克服这个问题?
答案 0 :(得分:1)
您在if
语句内返回,编译器无法确定是否满足条件。您需要返回if
块之外或else块中的内容,因为您的方法假设返回DataTable
类型的对象,现在如果Proc_name
不是"Vehicle_Booked_Info"
,那该怎么办? {1}},你的方法不会返回任何内容。所以改变你的方法,比如:
public DataTable Do_Insert_Update_Delete(string Proc_name, params object[] arg)
{
if (Proc_name == "Vehicle_Booked_Info")
{
SqlCommand com = new SqlCommand("Vehicle_Booked_Info", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(" @Today_Date", SqlDbType.DateTime).Value = Convert.ToDateTime(arg[0].ToString());
SqlDataAdapter sda = new SqlDataAdapter(com);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
else
{
return null; //Or some default value.
}
}
答案 1 :(得分:1)
public DataTable Do_Insert_Update_Delete(string Proc_name, params object[] arg)
{
DataTable dt = new DataTable();
if (Proc_name == "Vehicle_Booked_Info")
{
SqlCommand com = new SqlCommand("Vehicle_Booked_Info", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(" @Today_Date", SqlDbType.DateTime).Value = Convert.ToDateTime(arg[0].ToString());
SqlDataAdapter sda = new SqlDataAdapter(com);
sda.Fill(dt);
}
return dt;
}
答案 2 :(得分:0)
在方法结束前添加return null;
:
}
return null;
}
这里不需要 else
短语。
编译器显示错误,因为当不满足if
语句条件时,该方法不返回值。
答案 3 :(得分:0)
这是一个糟糕的代码练习..
将其更改为以下
public DataTable Do_Insert_Update_Delete(string Proc_name, params object[] arg)
{
if (Proc_name == "Vehicle_Booked_Info")
{
SqlCommand com = new SqlCommand("Vehicle_Booked_Info", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(" @Today_Date", SqlDbType.DateTime).Value = Convert.ToDateTime(arg[0].ToString());
SqlDataAdapter sda = new SqlDataAdapter(com);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
return new DataTable();// or return null
}