2015-10-05 4 views
0

я использовал DataTable для извлечения некоторых данных из БД MySQL, моя ошибкаDatatable ошибка в C#

не все пути кода возвращают значение

т.е. return DS.Tables[0] не в состоянии получить доступ внутри цикла или если заявление. Как я могу решить эту проблему?

public DataTable GetAlltheatredet()//I got error here// 
{ 
    DataTable myalltheat = GetAllmytheatdet(); 
    foreach (DataRow drow1 in myalltheat.Rows) 
    { 
     usermsterid = drow1["UserMasterId"].ToString(); 
     if (usrmid == usermsterid) 
     { 
      flag = 1; 
      break; 
     } 
     if (flag == 1) 
     { 
      try 
      { 
       string connString = "Server=localhost;database=Mytable;uid=root;"; 
       string query = "SELECT * FROM `Mytable`.`Mydata`"; 
       MySqlDataAdapter ma = new MySqlDataAdapter(query, connString); 
       DataSet DS = new DataSet(); 
       ma.Fill(DS); 
       return DS.Tables[0]; 
      } 
      catch (MySqlException e) 
      { 
       throw new Exception(e.Message); 
      } 
     } 
    } 
} 
+3

Отформатируйте свой код соответствующим образом. Ошибка связана с тем, что вы ничего не возвращаете, если флаг isn't1 –

+0

Я отформатировал код. Если ваш код отличается, отредактируйте его. –

+0

Код не имеет никакого смысла. Что ты пытаешься сделать? Запрос к базе данных не имеет ничего общего с циклом foreach, в котором вы перечисляете строки данных. – jdweng

ответ

5

у вас есть if(flag==1) { ... return ... } вам нужно добавить else заявления либо с return или throw new ...

public DataTable GetAlltheatredet()//I got error here// 
{ 
    DataTable myalltheat = GetAllmytheatdet(); 
    foreach (DataRow drow1 in myalltheat.Rows) 
    { 
     usermsterid = drow1["UserMasterId"].ToString(); 
     if (usrmid == usermsterid) 
     { 
      flag = 1; 
      break; 
     } 
     if (flag == 1) 
     { 
      try 
      { 
       string connString = "Server=localhost;database=Mytable;uid=root;"; 
       string query = "SELECT * FROM `Mytable`.`Mydata`"; 
       MySqlDataAdapter ma = new MySqlDataAdapter(query, connString); 
       DataSet DS = new DataSet(); 
       ma.Fill(DS); 
       return DS.Tables[0]; 
      } 
      catch (MySqlException e) 
      { 
       throw new Exception(e.Message); 
      } 
     } 
     else { 
      throw new Exception("Flag isn't 1 and I don't know what to do"); 
     } 
    } 
} 
2

это хорошо известная ошибки, если ваш метод, возвращающий DataType есть многоканальный путь блоки, как если {} else {} или случай переключения, вы должны возвращать что-то по каждому пути.

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