创建返回数据集的方法

时间:2014-05-28 14:49:37

标签: methods dataset return

我试图创建一个方法来将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();
    }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这里有一些问题......

1)你的方法不会返回任何东西。

您已声明返回类型Int32但从未返回任何值。编译器不允许这样做,因为调用此方法的任何代码都需要返回一个值。所以在某个地方,可能最后,你需要一个返回值的return语句。 (在这种情况下是一个整数值。)

2)您声称要返回DataSet

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

public DataSet gvProjDetailsBind(Int32 ProjID)
{
    // the rest of the code
    return dsDetails;
}

3)你没有分开你的担忧

您声称希望该方法返回DataSet,但在方法结束时您已经使用 DataSet

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

使用此DataSet调用此方法的代码是什么?执行?通常,UI代码会调用这样的方法来获取数据,然后将其绑定到元素(在本例中为gvProjDetails)。您似乎将这些概念组合到一个代码块中。