Methods 创建返回数据集的方法

Methods 创建返回数据集的方法,methods,dataset,return,Methods,Dataset,Return,我正在尝试创建一个方法,将ID号传递给存储的进程并返回一个数据集,这是我到目前为止所写的,我收到一条错误消息说:“并非所有代码路径都返回值”,我不确定如何完成此操作。非常感谢您的帮助 public Int32 gvProjDetailsBind(Int32 ProjID) { String strConn = System.Configuration.ConfigurationManager.ConnectionStrings["Project_T

我正在尝试创建一个方法,将ID号传递给存储的进程并返回一个数据集,这是我到目前为止所写的,我收到一条错误消息说:“并非所有代码路径都返回值”,我不确定如何完成此操作。非常感谢您的帮助

public Int32 gvProjDetailsBind(Int32 ProjID)
    {           

        String strConn = System.Configuration.ConfigurationManager.ConnectionStrings["Project_Tracker"].ConnectionString;
        SqlConnection connDetails = new SqlConnection(strConn);
        SqlCommand cmdDetails = new SqlCommand("USP_SelectProject", connDetails);
        cmdDetails.CommandType = CommandType.StoredProcedure;
        cmdDetails.Parameters.AddWithValue("@ProjectNumber", ProjID);
        SqlDataAdapter daDetails = new SqlDataAdapter(cmdDetails);
        DataSet dsDetails = new DataSet();
        daDetails.Fill(dsDetails);
        gvProjDetails.DataSource = dsDetails;
        gvProjDetails.DataBind();
    }

您缺少一个返回值。例如,您可以返回0。 返回0; 应该足够了。但是你真的想要什么回报呢?
对于dsDetails,您应该传递一个out参数并以这种方式返回dsDetails。

这里有一些问题

1) 您的方法不会返回任何内容

您已声明返回类型为
Int32
,但从未返回任何值。编译器不允许这样做,因为任何调用此方法的代码都希望返回一个值。因此,在某个地方,可能在结尾,您需要一个返回值的
return
语句。(在本例中为整数值。)

2) 您声称要返回一个
数据集

您声明的返回类型是
Int32
,而不是
DataSet
。如果要返回
数据集
,则需要相应地更改方法签名中的返回类型,然后(在方法末尾)返回
数据集
。大概是这样的:

public DataSet gvProjDetailsBind(Int32 ProjID)
{
    // the rest of the code
    return dsDetails;
}
3) 你没有分开你的顾虑

您声称希望该方法返回
数据集
,但在该方法的末尾,您已经使用了
数据集

gvProjDetails.DataSource = dsDetails;
gvProjDetails.DataBind();

调用此方法的代码将如何处理此
数据集
?通常,UI代码会调用这样的方法来获取数据,然后将其绑定到元素(在本例中为
gvProjDetails
)。您似乎正在将这些概念组合到一个代码块中。

好的,谢谢您的解释和更正,这很有意义。