我试图创建一个方法来将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)
您缺少返回值。例如,您可以返回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
)。您似乎将这些概念组合到一个代码块中。