2011-01-07 2 views
0
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 тогда ошибка приходит как:Проблема с использованием возврата() в asp.net C#

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

Возможный дубликат [Возврат значения в функции C#] (http://stackoverflow.com/questions/4613984/return-a-value-in-c-function) –

ответ

1

Положить return casetype1; после того, как закончите фигурные скобки.

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. 
} 
+0

будет указывать jaiiiii –

1

Вам нужно добавить что-то вроде возвращения string.Empty или предпочтительно делать что-то за исключением в вашем catch блоке.

Всегда есть дискуссия о том, где положить return, будь то в конце метода или в том месте, где вы хотите вернуться. Я лично хотел бы вернуться туда, где значение может быть возвращено, а затем решить другие проблемы, с которыми им нужно иметь дело - в этом случае блок catch.

Смежные вопросы