2015-10-27 2 views
1

Мой код выбирает только первую запись, но мне нужно выбрать все записи в таблице. Есть ли способ сделать это? Благодаря!C# MySQL Выберите все записи в таблице

public string getSiteForRotator() 
    { 
     string CommandText = "SELECT `url`, `desc`, `timer` FROM sites"; 
     string Connect = "connection_string"; 
     MySqlConnection myConnection = new MySqlConnection(Connect); 
     MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection); 
     myConnection.Open(); 
     MySqlDataReader MyDataReader; 
     MyDataReader = myCommand.ExecuteReader(); 

     while (MyDataReader.Read()) 
     { 
      string url = MyDataReader.GetString(0); 
      string desc = MyDataReader.GetString(1); 
      int timer = MyDataReader.GetInt32(2); 
      return url+"," + desc+"," + timer.ToString(); 
     } 
     MyDataReader.Close(); 
     myConnection.Close(); 
     return "ERROR"; 
    } 
+1

Вы заметили, что у вас есть возврат внутри цикла while? – Steve

+0

Как вы думаете, в чем проблема? что вы пробовали? –

ответ

0

Как теперь, ваш код возвращает только первую запись, потому что в цикле while вы выходите из метода в первом цикле с возвратом, который объединяет данные из первой записи. Если вы хотите вернуть все записи, то самый простой способ, чтобы использовать DataTable

public DataTable getSiteForRotator() 
{ 
    DataTable result = new DataTable(); 
    string CommandText = "SELECT `url`, `desc`, `timer` FROM sites"; 
    string Connect = "connection_string"; 
    using(MySqlConnection myConnection = new MySqlConnection(Connect)) 
    using(MySqlDataAdapter da = new MySqlDataAdapter(CommandText)) 
     da.Fill(dt); 
    return dt; 
} 

и в вашем коде вызова вы можете проверить, есть ли строки в таблице и использовать, что строки, если есть какие-либо из их

DataTable result = getSiteForRotator(); 
if(result.Rows.Count == 0) 
    Console.WriteLine("No rows found"); 

else 
    ... use the rows of the datatable .... 
0
public string getSiteForRotator() 
    { 
     string CommandText = "SELECT `url`, `desc`, `timer` FROM sites"; 
     string Connect = "connection_string"; 
     MySqlConnection myConnection = new MySqlConnection(Connect); 
     MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection); 
     myConnection.Open(); 
     MySqlDataReader MyDataReader; 
     MyDataReader = myCommand.ExecuteReader(); 

     string url = ""; 
     while (MyDataReader.Read()) 
     { 
      url = MyDataReader.GetString(0); 
      string desc = MyDataReader.GetString(1); 
      int timer = MyDataReader.GetInt32(2); 
      url+"," + desc+"," + timer.ToString(); 
     } 
     MyDataReader.Close(); 
     myConnection.Close(); 
     return url; 
    } 

Является ли это полезно ?? Вы используете оператор return во время цикла, то есть он показывает только одну запись.

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