没有回报价值

时间:2013-02-25 11:11:57

标签: c# datatable

实际上我的代码显示错误“并非所有代码路径都返回值”

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子句中使用它,则显示错误

  

当前上下文中不存在

如何克服这个问题?

4 个答案:

答案 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


}