2013-02-19 4 views
2

Я запускаю эту функцию в форме загрузки, чтобы отобразить информацию из моей базы данных в dataGridView в C#. Проблема заключается в том, что перед тем, как она пытается получить доступ к объявлению, появляется форма. Вот как он работает в отладчике. Я запускаю функцию ниже.Подключение к MySql с использованием C#

public void loadData() 
{ 
    var list = mysql.Select(); 
    try 
    { 
     //start from first row 
     for (int i = 0; i < dataGridView1.RowCount; i++) 
     { 
      //insert IDs 
      dataGridView1[0, i].Value = list[0][i]; 
      //insert Names 
      dataGridView1[1, i].Value = list[1][i]; 
      for (int j = 0; j < dataGridView1.ColumnCount; j++) 
      { 
       if (list[3][j] != null) 
       { 
        dataGridView1[j + 2, i].Value = list[3][j]; 
       } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

И затем он вызывает Выберите функцию в классе тузд и останавливаться на MySqlDataReader и всплывал форму окна. Может ли кто-нибудь сказать мне, что творилось?

Вот Mysql.Select()

public List <string> [] Select() 
{ 
    string query = "SELECT id,name,weekday,description FROM employee e INNER JOIN schedule s ON e.id=s.id"; 

    //Create a list to store the result 
    List<string>[] list = new List<string>[4]; 
    list[0] = new List<string>(); 
    list[1] = new List<string>(); 
    list[2] = new List<string>(); 
    list[3] = new List<string>(); 

    //Open connection 
    if (this.OpenConnection() == true) 
    { 
     //Create Command 
     MySqlCommand cmd = new MySqlCommand(query, connection); 
     //Create a data reader and Execute the command 
     MySqlDataReader dataReader = cmd.ExecuteReader(); 

     //Read the data and store them in the list 
     while (dataReader.Read()) 
     { 
      list[0].Add(dataReader["id"] + ""); 
      list[1].Add(dataReader["name"] + ""); 
      list[2].Add(dataReader["weekday"] + ""); 
      list[3].Add(dataReader["description"] + ""); 
     } 

     //close Data Reader 
     dataReader.Close(); 

     //close Connection 
     this.CloseConnection(); 

     //return list to be displayed 
     return list; 
    } 
    else 
    { 
     return list; 
    } 
} 
+2

Заменить бессмысленное название с конкретной темой вашего вопроса, пожалуйста. – abatishchev

+0

@AaronLS он просто удалил этот код - его в 'form_load' –

+0

что вы имеете в виду, остановившись? Он попал в точку останова, которую вы там установили? Есть ли ошибка? Вы пытались поставить точку останова на линии с (dataReader.Read())? – Maciej

ответ

3

Хотя его обработку команды MySQL и извлечения информации из базы данных она появляется, как приложение было дано время, чтобы нарисовать форму.

Простое исправление, чтобы сделать это следующим образом:

private void frmMain_Load(object sender, EventArgs e) 
    { 
      this.visible = false; 
      loadData(); 
      this.visible = true; 
    } 
+0

он все еще всплывает в форме на MySqlDataReader. Что еще я мог бы сделать? – user1874435

+0

Положите 'Select()' код в 'try'' catch' Я думаю, что есть Null Exception там – tttony

+0

спасибо tttony, ты моя спасатель! – user1874435

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