在asp.net中使用return()的问题c#

时间:2011-01-07 06:20:38

标签: c# asp.net return-value

    string casetype6(HiddenField HiddenField1,DropDownList DropDownList3)
        {
            String casetype1="";

            try
            {
                OdbcConnection casetype = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=10.155.160.130;Database=testcase;User=root;Password=;Option=3;");
                casetype.Open();

                //************to get case type    
                string casetypequery = "select casename from casetype where skey=?";

                //************to get case type
                OdbcCommand casetypecmd = new OdbcCommand(casetypequery, casetype);
                String casetypefromdropdown = DropDownList3.SelectedItem.ToString();
                casetypecmd.Parameters.AddWithValue("?", casetypefromdropdown);
                using (OdbcDataReader casetypeMyReader = casetypecmd.ExecuteReader())
                {
                    while (casetypeMyReader.Read())
                    {
                        String casename = casetypeMyReader["casename"].ToString();
                        HiddenField1.Value = casename;
                        casetype1=HiddenField1.Value.ToString();
return casetype1;
                    }
                }

            }
            catch(Exception ep)
            { }
        }

我想在此方法之外使用 casetype1 。我该怎么做? 如果我说返回casetype1那么错误来自:

    'Data.casetype6(System.Web.UI.WebControls.HiddenField, System.Web.UI.WebControls.DropDownList)': not all code paths return a value

3 个答案:

答案 0 :(得分:3)

如果您不以某种方式输入while loop(如果您的casetypeMyReader为空)或者抛出某个异常(连接无法访问数据库),则您的方法不会返回任何内容。以下是更改代码。看看。

string casetype6(HiddenField HiddenField1,DropDownList DropDownList3)
{
    String casetype1="";

    try
    {
        OdbcConnection casetype = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=10.155.160.130;Database=testcase;User=root;Password=;Option=3;");
        casetype.Open();

        //************to get case type    
        string casetypequery = "select casename from casetype where skey=?";

        //************to get case type
        OdbcCommand casetypecmd = new OdbcCommand(casetypequery, casetype);
        String casetypefromdropdown = DropDownList3.SelectedItem.ToString();
        casetypecmd.Parameters.AddWithValue("?", casetypefromdropdown);
        using (OdbcDataReader casetypeMyReader = casetypecmd.ExecuteReader())
        {
            while (casetypeMyReader.Read())
            {
                String casename = casetypeMyReader["casename"].ToString();
                HiddenField1.Value = casename;
                casetype1 = HiddenField1.Value.ToString();
                break; // instead of returning from here, break the loop
            }
        }

    }
    catch(Exception ep)
    { }

    return casetype1; // and return here.
}

答案 1 :(得分:1)

您需要在string.Empty区块中添加类似返回catch最好执行某些操作的内容。

总是存在关于放置return的位置的争论,无论是在方法的最后还是在你想要返回的位置。我个人喜欢返回值可以返回的位置,然后处理需要处理的其他问题 - 在这个例子中,catch块。

答案 2 :(得分:1)

在结束捕获部分的大括号之后放置return casetype1;